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

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


Talk is cheap,show me your code.