二维数组
- 1.数组的声明和初始化
-
2.数组元素的调用
-
3.数组的属性:length
-
4.数组的遍历
-
5.数组元素的默认初始化值
public class ArrayTest2 {
public static void main(String[] args) {
//1.数组的声明和初始化
int[] arr1 = new int[]{1,2,3};
//静态初始化
int[][] arr2 = new int[][]{{1,2,3,6},{4,5},{7,8,9}};
int[][] arr3 = {{1,2,3},{4,5},{7,8,9}};//类型推断
//动态初始化1
int[] arr4[] = new int[4][3];
//动态初始化2
int arr5[][] = new int[4][];
//错误的方式:
//int arr6[][] = new int[][4];
//int[4][3] arr7 = new int[4][3];
//int[][] arr8 = new int[3][3]{{1,2,3},{4,5,6},{7,8,9}};
//2.数组元素的调用:通过角标的方式
arr5[0] = new int[4];
arr5[1] = new int[3];
arr5[2] = new int[]{1,2,3,4};
System.out.println(arr5[2][1]);
System.out.println(arr4[2][0]);
//3.数组的属性:length
System.out.println(arr2.length);//3
System.out.println(arr2[0].length);//4
System.out.println(arr2[1].length);//2
System.out.println(arr2[2].length);//3
//4.数组的遍历:int[][] arr2 = new int[][]{{1,2,3,6},{4,5},{7,8,9}};
for(int i = 0;i < arr2.length;i++){
for(int j = 0;j < arr2[i].length;j++){
System.out.print(arr2[i][j] + " ");
}
System.out.println();
}
}
}
/*
* 5.数组元素的默认初始化值
*
* 情况一:int[][] arr1 = new int[4][3];
* 外层元素:arr1[0]、arr1[1]、arr1[2]、arr1[3]
* 存储的都是内部数组的地址值。
*
*
* 内层元素:arr1[0][0]
* 与前面ArrayTest1.java中提到的一维数组元素的默认初始化值一致。
*
* 情况二:int arr2[][] = new int[4][];
* 外层元素:arr2[0]、arr2[1]、arr2[2]、arr2[3]
* 此时值为null
* 内层元素:由于外层元素没有初始化,所有不可以调用内层元素。否则,报错
*
*
*
* )
*
*/
public class ArrayTest3 {
public static void main(String[] args) {
//情况1
int[][] arr1 = new int[4][3];
System.out.println(arr1[0]);//[I@15db9742
System.out.println(arr1[1]);//[I@6d06d69c
System.out.println(arr1[2]);//[I@7852e922
System.out.println(arr1[3]);//[I@4e25154f
System.out.println(arr1[0][0]);
System.out.println();
//情况2
int arr2[][] = new int[4][];
System.out.println(arr2[0]);//null
System.out.println(arr2[1]);//null
System.out.println(arr2[2]);//null
System.out.println(arr2[3]);//null
//System.out.println(arr2[0][0]);//报错
float[][] arr3 = new float[2][3];
//编译不通过。arr3与arr1是完全不同的引用类型。
//arr3 = arr1;
arr2 = arr1;
int i = 10;
int j = i;
}
}