javase -- 多维数组


多维数组.

数组的元素也是数组

  • 数组的元素是数组

1、声明和初始化.

  • 数组一旦初始化长度,就确定了
//静态初始化
int[][] arr = new int[][]{{1,2},{2,3}}; // int[] arr[]

//动态初始化 1
int[][] arr = new int[2][2];// 二维数组长度固定 int[] arr[]
//动态初始化 2
int[][] arr = new int[2][];// 二维数组长度不固定 int[] arr[]

//初始化代码省略

//特殊 类型推断
int[][] num = {{1,2},{2,3,4}};

2、获取指定位值的元素.

  • 通过索引获取
  • 索引从 0 开始
int[][] arr1 = new int[2][2];
int[][] arr2 = new int[2][];

arr1[0][0]; // 默认值为 1
arr2[0][0]; // 抛出NullPointerException异常 因为外层数组元素没有分配空间(即外层数组arr2[0] = null;)

//处理
arr2[0] = new int[1];
arr2[0][0];

3、获取数组长度.

int[][] num = {{1,2},{2,3,4}};

int l = num[0].length + num[1].length;// 2 + 3 = 5
System.out.println(l);

4、遍历数组.

fori:
1 2 3 
foreach:
1 2 3 
lambda:
1 2 3 
int[][] num = {{1,2},{2,3,4}};

System.out.println("fori:");
for(int i = 0; i < num.length; i++) {
    for(int j = 0; j < num[i].length; j++) {
        System.out.print(num[i][j] + " ");
    }
    System.out.println();
}

System.out.println("\nforeach:");
for(int[] ns : num) {
    for(int n : ns) {
        System.out.print(n + " ");
    }
    System.out.println();
}

5、数组元素的默认初始化值.

外层数组元素(元素是数组)默认值:[I@7852e922
内层数组元素(和数据类型有关:这里是int)默认值0

从上面可以看出 外层都是地址值
             内层默认值是和数据类型有关的,整型:0,浮点型:0.0,字符型:'',bool型:false,对象:null;
int[][] num = new int[2][2];

//外层
System.out.println("外层数组元素(元素是数组)默认值:" + num[0]);
//内层
System.out.println("内层数组元素(和数据类型有关:这里是int)默认值" + num[0][0]);
//整个数组 地址值
System.out.println(num);

[[Ljava.lang.Object;@4e25154f //这里并不是默认初始化值,只是打印这个二维数组的地址值
//如果是下面这种情况
int[][] num = new int[2][];

//外层
System.out.println(num[0]); // null
//内层
System.out.println(num[0][0]); // 抛出NullPointerException异常 因为外层数组元素没有分配空间(即外层数组arr2[0] = null;)

null
Exception in thread "main" java.lang.NullPointerException
    at javaSE.test.main(test.java:22)

6、数组内存解析.


文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
maven远程仓库镜像更改为阿里云镜像 maven远程仓库镜像更改为阿里云镜像
maven远程仓库镜像更改为阿里云镜像.1.找到maven下的conf目录中的config.xml文件.在<mirrors>标签中添加 如下内容 <mirror> <id>nexus-aliyun</i
2020-07-21
下一篇 
javase -- 一维数组 javase -- 一维数组
一维数组.1、声明和初始化. 数组一旦初始化长度,就确定了 int[] num; //声明 // int num[] //1.静态初始化 num = new int[]{1,2,3}; //2.动态初始化 num = new int
2020-07-20
  目录