package com.atguigu.java;
/*
* 二维数组的使用
* 1.理解:
* 对于二维数组的理解,可以看成是一维数组array1又作为一维数组array2的元素存在。
* 其实从数组底层的运行机制来看,其实没有多维数组。
* 2.二维数组的使用
* ①二维数组的声明和初始化
* ②如何调用数组的指定位置的元素
* ③如何获取数组的长度
* ④遍历数组元素
* ⑤数组元素的默认初始化值
* ⑥内存中是如何分配数组结构的,数组的内存解析
*/
public class ArrayTest2 {
public static void main(String[] args) {
// ①二维数组的声明和初始化
int[] arr = new int[] { 1, 2, 3 };// 一维数组
// 静态初始化
int[][] arr1 = new int[][] { { 1, 2, 3 }, { 2, 3 }, { 4, 5, 6 } };// 二维数组
// 动态初始化1
String[][] arr2 = new String[3][2];// 二维数组
// 动态初始化2
String[][] arr3 = new String[3][];// 二维数组
// 也是正确的写法:
int[] arr4 = new int[] { 1, 2, 3, 4 };
int[] arr5 = { 1, 2, 3, 4 };// 类型推断
// ②如何调用数组的指定位置的元素
System.out.println(arr1[0][1]);// 2
System.out.println(arr2[1][1]);// null
arr3[1] = new String[4];
System.out.println(arr3[1][0]);// 报错,空指针异常
// ③如何获取数组的长度
System.out.println(arr1[1].length);// 2
//④遍历数组元素:二维数组使用2个for循环
for(int i = 0;i < arr1.length;i++){
for(int j = 0;j < arr1[i].length;j++){
System.out.print(arr1[i][j] + " ");
}
System.out.println();
}
}
}
package com.atguigu.java;
/*
* 二维数组的使用
* 规定:二维数组分为外层数组的元素和内层数组的元素
* int[][] arr = new int[4][3];
* 外层元素:arr[1],arr[3];
* 内层元素:arr[2][1]
*
*⑤数组元素的默认初始化值
* 初始化方式1:int[][] arr = new int[4][2];
* 外层元素初始化值:地址值
* 内层元素初始化值:与一维数组初始化值相同
* 初始化方式2:int[][] arr = new int[4][];
* 外层元素初始化值:null(都是空的内层元素还没有进行赋值操作,所以是null)
* 内层元素初始化值:会直接报错。
*
* ⑥内存中是如何分配数组结构的,数组的内存解析
*/
public class ArrayTest3 {
public static void main(String[] args) {
//⑤数组元素的默认初始化值
int[][] arr = new int[4][3];
System.out.println(arr);//二维地址
System.out.println(arr[0]);//一维数组地址
System.out.println(arr[1]);//一维数组地址
System.out.println(arr[0][0]);// 0 数
float[][] arr1 = new float[3][4];
System.out.println(arr1[2][2]);//0.0
String[][] arr2 = new String[3][4];
System.out.println(arr2[2][2]);//null
System.out.println("**********");
double[][] arr3 = new double[4][];
System.out.println(arr3[1]);//null
//System.out.println(arr3[1][0]);//报错
}
}