众所周知生活中离不开容器,比如:喝水要使用水杯,购物要使用购物袋。那么程序世界自然也离不开容器,所谓数组(Array)就是在程序中充当容器功能的一种数据类型。
1.数组的特征
1)连续的 2)大小固定 3)类型一致
2.数组的声明和初始化
1)静态初始化 声明的同时初始化数组元素,用户分配初值,系统计算长度。
语法
int[] arr = {1,2,3,4,5};
//或者
int arr[] = {1,2,3,4,5}; //不推荐使用这种声明方式。因为int[] arr比 int arr[] 容易让用户名明白声明的是整型数组变量。
注意:静态初始化数组后,一旦赋给初值就不能重新初始化,比如以下代码:
int[] arr = {1,2,3};
arr = {1,2,3,4,5}; //错误!一旦初始化后长度就不能改变。除非重新分配内存空间。比如:
arr = new int[]{1,2,3,4,5};
2)动态初始化
使用new分配内存空间,用户决定数组长度,系统给数组元素赋初值。 语法:
int[] arr = new int[5];
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]); //输出结果都为0;
}
arr[4] = 100; //改变第五个元素的值为100;
3.数组的下标和长度
数组有一个length属性,表示数组的长度。 数组中的每一个元素都有下标,下标从0开始,最后一个元素的下标就是arr.length-1; 如果下标超出了规定的范围,就会抛出数组下标越界异常,例如:
int[] arr = new int[5];
System.out.println("数组长度是:" + arr.length); //打印数组的长度
arr[0]=1;
arr[arr.length-1]=100;
System.out.println(arr[0]);
System.out.println(arr[arr.length - 1]);
arr[arr.length] = 1000; //这里出现ArrayIndexOutOfBoundsException
System.out.println(arr[arr.length]);
运行结果:
数组长度是:5
1
100
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at com.oracle.datatype.Test.main(Test.java:18)
4.数组的遍历
1)使用for循环遍历
int[] arr = {12,34,6,7,8};
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
2)使用foreach遍历
int[] arr = {12,34,6,7,8};
for(int n: arr){
System.out.println(n);
}
for循环遍历使用频率最高,最灵活,每次知道当前的循环次数。 foreach循环最大的好处是语法简单,内部是使用迭代器原理实现。缺点的无法判断当前的循环次数。比如,上面的例子如果循环次数大于3次,则跳出循环,使用for循环可以很轻松的实现,但是foreach循环就无法办到。
int[] arr = {12,34,6,7,8};
for(int i=0;i<arr.length;i++){
if(i>=3){
break;
}
System.out.println(arr[i]);
}