[英]What exactly happens in memory when we allocate an array using an empty curly braces?
如果我们调用length
,以下两个示例都返回 0:
int[][] b = {};
或者
int[] a = {};
我认为像往常一样在堆上分配了两个对象:我想在第二种情况下,分配了一个int[]
类型的对象(空数组),但在第一种情况下?
在这些情况下到底发生了什么?
二维数组是数组的数组,所有数组本身都是对象。 因此,在newarray
编译器将进行相同的newarray
调用,但略有不同。
Java代码:
public static void main(String[] args) {
int[][] b = {};
int[] a = {};
}
字节码:
stack=1, locals=3, args_size=1
0: iconst_0
1: anewarray #19 // [][] . array of arrays --[I
4: astore_1
5: iconst_0
6: newarray int //[] array of int
8: astore_2
9: return
int[] a = {};
等价于int[] a = new int[0];
int[][] b = {};
等价于int[][] b = new int[0][];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.