JAVA 为啥多维数组可以只声明第一个括号的值就能完成初始化?

滑动条消除线*********************************************************************
如题,java中实际上没有多维数组,只有一维数组,多维数组被解释为“数组的数组”(java核心技术卷Ⅰ-CayS.horstmann著11版88页的原话)。那么我申明二维数组的时候为什么可以只申明一维数组的长度,而可以选择不声明一维数组里面的数组的长度。难道数组可以不先声明长度吗?
JAVA可以允许如上语法
可以明确的是,Java是一门逻辑性非常强的语言,任何问题都是有据可循的。而在JAVA中,创建对象之前一定要先确定对象所需内存的大小,以便jvm分配内存给对象。而对象的大小由对象所引用的类决定,在jvm运行字节码new指令时,会首先检查相关的class文件是否被加载,通过与对象相关的类确定即将创建的对象所需的内存。但是如果创建的对象是数组的话,在这个过程将无法得到数组的长度,所以需要我们手动输入数组的长度来帮助jvm完成内存划分。
但是java中二维数组初始化的时候貌似里面的一维数组可以不用给长度的,如上图。刚开始我也不明白,仔细看了下。首先上三种给二维数组赋值的方法。
在这里插入图片描述
仔细查看第三种方法,然后恍然大悟
在这里插入图片描述
其实并不是二维数组在声明的时候不用给数组中的数组长度,而是声明二维数组之时并没有开始使用里面的一维数组,类似于目前对于里面的一维数组只到以下步骤:当然不报错。
在这里插入图片描述
要用这个数组还需new一个数组出来人后给出确定的长度,这样不违背基本逻辑。
因为是java初学者,本身问题没啥意义,解答也可能错误。而文章也只是作为学习的记录。希望以后的自己能返回来重新更改认识不到位的地方。


Talk is cheap,show me your code.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值