1、什么是数组
在我看来,数组就像我们生活中的容器,比如水杯等,那数组(Array)
在程序中就是充当容器的一中数据类型。
1.1 数组的特征
(1)连续的。
(2)类型一致。
(3)大小固定。
这都比较好理解。
1.2 数组的声明和初始化
(1)静态初始化
所谓静态初始化就是在声明数组的同时初始化数组元素,而且由用户分配初值,系统计算长度。
例如:
int[] arr = {1,2,3,4,5};
//或者
int arr[] = {1,2,3,4,5};
//但是不太推荐这种写法
要注意的是,静态初始化后,赋给初值就不能重新初始化,比如以下代码:
int[] arr = {1,2,3,4,5};
arr = {1,3,5};//错误,需要重新分配内存空间
arr = new int[]{1,3,5};
(2)动态初始化
使用new分配内存空间,用户决定数组长度,系统给数组赋初值。例如:
int[] arr = new int[5];
//遍历
for(int i = 0;i<arr.length;i++){
System.out.pirntln(arr[i]+"");
//结果都为0
}
arr[4] = 100;//改变第5个元素的值。
2.数组的下标和长度
数组有一个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)
3.数组的遍历
数组遍历有两种方法,一种是普通的for
循环,另外一种就是foreach
迭代器循环。
(1)for循环
int[] arr = {1,2,3,4,5};
for(int i = 0;i < arr.length;i ++){
System.out.pirntln(arr[i]+"");
}
(2)foreach循环
int[] arr = {1,2,3,4,5};
foreach(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]);
}
新手小白,如有不对请指出。