簡體   English   中英

基本數組或對象初始化

[英]Array of primitives or objects initialization

字符串對象數組可以創建為

//可接受的聲明和初始化

line 1: String[]s = new String[2];
line 2: String[]s = new String[]{"a","b"};

//下面的init對我來說也很好,但是編譯器出錯了

line 3: String[] s = new String[2] { "a", "b" };

1)為什么我不能在第3行中指定數組的大小?
2)當我使用第3行創建數組時,是在堆上還是在字符串池中創建了字符串“ a”和“ b”?

  1. 您不能同時初始化數組並指定其大小,那將是多余的。

  2. 所有字符串文字都存儲在常量池中,並且在類加載時代碼運行之前發生。

還要注意,即使new String[]對於初始化程序也是多余的:

String[] s = {"a","b"};

這樣做是為了防止歧義。

如果[]中的數字與您傳遞的實際對象數不匹配,系統應該怎么做?

因此,數組的大小由傳遞給初始化程序的對象數定義。


第二個問題有點不正確。 Java對象總是在堆上創建。

您的情況下的String對象是從String對象池中提取的,因為您使用文字,並且編譯器可以輕松實現它們在運行時的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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