[英]Passing a string to a string array reference
我對下面的代碼感到有些困惑:
class BooksTestDrive {
public static void main(String [] args) {
String [] islands = new String[4];
islands[0] = "Bermuda";
islands[1] = "Fiji";
islands[2] = "Azores";
islands[3] = "Cozumel";
}
}
我假設這會返回NullPointerException
錯誤,因為沒有初始化對象。
我以為我需要做
class BooksTestDrive {
public static void main(String [] args) {
String [] islands = new String[4];
islands[0] = new String();
// etc..
islands[0] = "Bermuda";
islands[1] = "Fiji";
islands[2] = "Azores";
islands[3] = "Cozumel";
}
}
為什么這里好嗎? 為什么不拋出異常?
“百慕大”是一個字符串文字和String str = "Bermuda";
暗示str
是一個值為“Bermuda”的新String對象。
String str = "Bermuda";
String str = new String("Bermuda");
上面的行做了同樣的工作,但有一點不同,第一個字符串實例由Java String constant pool
管理,第二個字符串不是。
Exception
,因為你正在使用它的記憶中隱式創建並分配給引用“靜態”字符串沒有拋出islands[i]
你沒有做錯任何事,編譯器尊重它並且它也在運行。
當您使用靜態字符串文字時,將隱式創建字符串對象。 你也可以用調試器試試這個,你的String“Bermuda”有一個對象id。
您詢問的異常發生在聲明變量但未創建對象時。 在“String [] islands = new String [4];”行中,new關鍵字用於實例化(或創建)Integer類型的對象,並為指針變量島分配此對象。 所以你不會得到例外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.