如果我们调用length
:
int[][] b = {};
或
int[] a = {};
我认为像往常一样在堆上分配两个对象:我想在第二种情况下,分配了int[]
类型的对象(空数组),但在第一种情况下?
在这些情况下,究竟发生了什么?
答案 0 :(得分:2)
二维数组是数组数组,所有数组都是对象本身。因此引擎编译器将进行相同的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
答案 1 :(得分:1)
int[] a = {};
相当于int[] a = new int[0];
int[][] b = {};
相当于int[][] b = new int[0][];