数组用于存储相同类型的多个数据。
二维数组属于数组的嵌套。
一、一维数组
(一)特点
- 数组属于引用数据类型。
- 数据的长度一旦确定不可改变。
- 同一个数组中存放的数据类型要保持一致 。
- 数组中的数据是有序的。
- 数组的数据类型可以是基本数据类型,也可以是引用数据类型。
(二)声明
- 数据类型[] 数组名;
int[] i;
(推荐使用) - 数据类型 数组名[];
int i[];
(三)初始化
1. 动态初始化:
数据类型[] 数组名=new 数据类型[length];
例:
int[] i = new int[5];//声明一个长度为5的int类型的数组
i[0]=5;
i[1]=4;
i[2]=3;
i[3]=2;
i[4]=1;
动态初始化的数组有默认值,默认值与成员变量默认值相同。
2. 静态初始化:
(1)数据类型[] 数组名=new 数据类型[]{值1,值2,值3...};
(2)数据类型[] 数组名={值1,值2,值3...};
例:
int[] i = new int[]{1,2,3,4,5};//标准赋值,声明一个长度为5的int类型的数组,并赋默认值
int[] i = {1,2,3,4,5};//简易赋值
标准赋值可以将引用指向新数组,简易赋值不可以将引用指向新数组
例:
int[] i =int[] {1,2,3,4,5};
i = new int {1,2,3};//正确
int[] i = {1,2,3,4,5};
i = {1,2,3};//错误
(四)遍历
1. 普通for循环
for ( int i=0 ; i<=数组名.length-1 ; i++ ) {//i为索引
System.out.println(数组名[i]);
}
2. 增强for循环
for (数据类型 i : 数组名 ) {//将数组名对应的值赋给i,循环打印所有的值
System.out.println( i );
}
二、二维数组
(一)声明
- 数据类型[ ][ ] 数组名;
int[][] i;
(推荐使用) - 数据类型 数组名[ ][ ];
int i[][];
- 数据类型[ ] 数组名[ ];
int[] i[];
(二)初始化
1. 动态初始化:
(1)数据类型[ ][ ] 数组名=new 数据类型[长度1][长度2];
每个嵌套的数组的长度都一致,为长度2。
例:
int[][] i = new int[1][5];
i[0][0]=5;
i[0][1]=4;
i[0][2]=3;
i[0][3]=2;
i[0][4]=1;
(2)数据类型[ ][ ] 数组名=new 数据类型[长度1][ ];
每个嵌套的数组的长度可以不一致。
例:
int[][] i = new int[2][];
i[0]=new int[]{1,2,3}
i[1]=new int[]{1,2,3,4}
2. 静态初始化:
(1)数据类型[][] 数组名=new 数据类型[][]{{值1,值2,值3...},{值1,值2,值3...},...};
(2)数据类型[] 数组名={{值1,值2,值3...},{值1,值2,值3...},...};
例:
int[][] i = new int[][]{{1,2,3,4,5},{1,2,3,4}};//标准赋值
int[][] i = {{1,2,3,4,5},{1,2,3,4}};//简易赋值
(四)遍历
增强for与普通for可互相嵌套使用。
1. 普通for × 普通for
for ( int i=0 ; i<=数组名.length-1 ; i++ ) {//i为索引
for ( int j=0 ; i<=数组名[i].length-1 ; i++ ) {
System.out.println(数组名[i][j]);
}
2. 增强for × 增强for
for (数据类型[] i : 数组名 ) {//将数组名对应的值赋给i,循环打印所有的值
for(数据类型 j:i){
System.out.println( j );
}
}
3. 普通for × 增强for
for ( int i=0 ; i<=数组名.length-1 ; i++ ) {//i为索引
for (数据类型 j : 数组名[i]) {
System.out.println(j);
}
4. 增强for × 普通for
for( 数据类型[] i:数组名){
for(int i=0;i<=数组名.length-1;i++){
System.out.println(数组名[i]);
}
}