簡體   English   中英

當我們使用空花括號分配數組時,內存中究竟發生了什么?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM