[英]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.