簡體   English   中英

將字符串傳遞給字符串數組引用

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

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