关于二维数组的内存结构

double[][] arr1 = new double[3][4];
System.out.println(arr1[1][2]);//0.0  
System.out.println(arr1[1]);//[D@1b6d3586,[代表一维数组,D代表Double类型,@后的数字代表地址
System.out.println(arr1);//[[D@4554617c,[[代表二维数组,D代表Double类型,@后的数字代表地址

double[][] arr2 = new double[3][];//只初始化了二维数组,具体的一维数组并未创建
System.out.println(arr2);//[[D@1b6d3586
System.out.println(arr2[1]);//null,因为并未创建一维数组,所以arr2[1]找不到具体的内存地址,只知道arr2[1]中会存放int类型的一维数组,一维数组是引用数据类型,默认值为null
System.out.println(arr2[1][2]);//报错,因为并未创建一维数组,数组都还没有创建呢,更别提查找其中的第三个元素了,所以报错

也就是说,只有创建了相应维度的数组,才能找到其地址进行显示,否则会显示上一个维度的的初始化值。
此外,二维数组的长度并不一定相等,double[][] arr2 = new double[3][];可以往每一行中插入任意长度的一维数组,比如:arr2[1] = new int[]{1,2,3}; arr2[2] = new int[8];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值