在Java中,一个表达式“quot;新国际[3][3]”;在堆内创建多少个数组?
我的意思是,它看起来确实创建了3个数组,其中包含3组int元素。 但是如果我们潜得很深,不是应该是4点吗? 因为创建了一个额外的数组,用来存储这3个数组中每个数组的引用 这个额外数组的引用实际上是存储在LHS上变量上的 例如:int A[][]=新int[3][3] 这意味着“变量A”包含->引用数组“[1个引用对应1个数组]的引用,每个引用包含->每个数组[最终存储真元素]的引用在Java中,一个表达式“quot;新国际[3][3]”;在堆内创建多少个数组?,java,arrays,oop,Java,Arrays,Oop,我的意思是,它看起来确实创建了3个数组,其中包含3组int元素。 但是如果我们潜得很深,不是应该是4点吗? 因为创建了一个额外的数组,用来存储这3个数组中每个数组的引用 这个额外数组的引用实际上是存储在LHS上变量上的 例如:int A[][]=新int[3][3] 这意味着“变量A”包含->引用数组“[1个引用对应1个数组]的引用,每个引用包含->每个数组[最终存储真元素]的引用 因此,我们有3个存储元素的数组和1个存储引用的数组,总共4个数组。int[]a=new int[3][3]将总共创
因此,我们有3个存储元素的数组和1个存储引用的数组,总共4个数组。
int[]a=new int[3][3]
将总共创建4个数组:
- 3个数组,包含
(即包含int
值的数组),大小为3。它们的类型是int
int[]
- 1个数组,包含大小为3的
(即包含对int[]
数组的引用的数组)。这种类型是int[]
int[][]
请注意,表示法
inta[][]
相当于int[][]a
,但在Java中普遍不鼓励这样做:最好将完整的类型描述放在一个位置,而不要在变量名前后“展开”。第二种表示法允许与C代码“兼容”,但并未真正使用。int[][]a=new int[3][3]
将总共创建4个数组:
- 3个数组,包含
(即包含int
值的数组),大小为3。它们的类型是int
int[]
- 1个数组,包含大小为3的
(即包含对int[]
数组的引用的数组)。这种类型是int[]
int[][]
请注意,表示法
inta[][]
相当于int[][]a
,但在Java中普遍不鼓励这样做:最好将完整的类型描述放在一个位置,而不要在变量名前后“展开”。第二种表示法允许与C代码“兼容”,但并未真正使用。是的,newint[3][3]
是一个由三个数组组成的数组;总共有四个数组。是的,newint[3][3]
是一个由三个数组组成的数组;总共有四个阵列。