初始化了一个长度为3的一堆数组,且元素都是数组;
每个元素数组的长度都是4
int [ ] [ ] array = new int [ 3 ] [ 4 ] ;
- 由于二维数组的本质仍是一个一维数组,
- 所以,初始化时也是在初始化一维数组,
- 那么,当不确定“第二维度”的数组的元素数量时,
- 在赋值符号右侧,创建数组对象的第2个中括号中可以留空
int [ ] [ ] arrays = new int [ 3 ] [ ] ;
- 如果你的代码只是这样:
int [ ] [ ] array = new int [ 3 ] [ ] ;
array[0] = new int[2];- 相当于:
- 你创建了1个名为array的一维数组,长度为3。
- array数组的第1个元素是数组,长度为2
- 这个数组没有名字,你只能通过array[0]来表示它
- 这个数组的2个元素的值均为0
- array数组元素均为null
/*
二维数组的动态初始化
*/
public class ArrayDemo2 {
public static void main(String[] args) {
//初始化了一个长度为3的一堆数组,且元素都是数组;
//每个元素数组的长度都是4
int[][] array = new int[3][4];
/*
由于二维数组的本质仍是一个一维数组,
所以,初始化时也是在初始化一维数组,
那么,当不确定“第二维度”的数组的元素数量时,
在赋值符号右侧,创建数组对象的第2个中括号中可以留空
*/
/** 如果你的代码只是这样:
* int[][] array = new int[3][];
* array[0] = new int[2];
* 相当于:
* 你创建了1个名为array的一维数组,长度为3。
* array数组的第1个元素是数组,长度为2
* 这个数组没有名字,你只能通过array[0]来表示它
* 这个数组的2个元素的值均为0
* array数组元素均为null
*/
int[][] arrays = new int[3][];
/**
如果在动态初始化时,没有确定“第二维度”的数组长度,
在使用之前,必须对第二维度的数组进行初始化,然后才可以使用
*/
//System.out.println(arrays[0][1]);
//报空指针异常:NullPointerException
arrays[0] = new int[2];
arrays[0][0] = 2;
arrays[0][1] = 4;
System.out.println(arrays[0][1]);//4
array[1] = new int[4];
array[1][0] = 4;
array[1][1] = 2;
array[1][2] = 8;
array[1][3] = 1;
System.out.println(array[1][2]);//8
}
}
- 使用嵌套的循环,先遍历“第一维度”,并在内部遍历“第二维度”即可
- 你可以使用任何你熟悉的循环语法来实现遍历,
- 例如:
- while
- do...while
- for
- 增强for(foreach)
- 内外层循环的语法也并不要求统一
- 一般内外层循环都使用for语法
int[][] a = {{6,5,1,3},{2,5,7,8},{3,691,23,87}};
for (int i=0;i<a.length;i++){
for (int j=0;j< a.length;j++){
System.out.println(a[i][j]);
}
}