[英]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”?
您不能同時初始化數組並指定其大小,那將是多余的。
所有字符串文字都存儲在常量池中,並且在類加載時代碼運行之前發生。
還要注意,即使new String[]
對於初始化程序也是多余的:
String[] s = {"a","b"};
這樣做是為了防止歧義。
如果[]中的數字與您傳遞的實際對象數不匹配,系統應該怎么做?
因此,數組的大小由傳遞給初始化程序的對象數定義。
第二個問題有點不正確。 Java對象總是在堆上創建。
您的情況下的String對象是從String對象池中提取的,因為您使用文字,並且編譯器可以輕松實現它們在運行時的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.