在Java 中,將空字串與另一個字串連接不會拋出NullPointerException,因為可能會拋出NullPointerException預期。相反,結果是一個前綴為“null”的新字串。
根據Java 語言規範(JLS) ):
"如果[對空字串]的引用為空,則將其轉換為字串'null ' (四個ASCII 字元n、u、l、l)。字串會自動轉換為 "null"。這個行為是如何實現的?
編譯器最佳化字串連線以提高效能。它透過使用 StringBuilder 物件累積串聯結果來實現此目的。
遇到空字串時:
如果空字串是第一個參數,則呼叫String.valueOf( ) 將其轉換為非空字串("null ")。
- 如果空字串不是第一個參數,則會將空字串附加到StringBuilder,然後對結果呼叫 String.valueOf()。
範例
考慮以下程式碼:
編譯器將此程式碼最佳化為以下內容等價:由於s 為null,因此String.valueOf(s)傳回“null”,然後將其附加到 StringBuilder 並轉換為字串。String s = null; s = s + "hello"; System.out.println(s); // prints "nullhello"登入後複製s = new StringBuilder(String.valueOf(s)).append("hello").toString();登入後複製
以上是為什麼在 Java 中連接空字串不會拋出 NullPointerException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!