Java では、Null 文字列を別の文字列と連結しても、NullPointerException はスローされません。期待する。代わりに、結果は先頭に「null」が付加された新しい文字列になります。
Java 言語仕様 (JLS) による):
"[null 文字列への] 参照の場合null の場合、文字列 'null' (4 つの ASCII 文字 n、u、l、l) に変換されます。"
したがって、null 文字列は、前に自動的に "null" に変換されます。連結が行われます。
コンパイラは、パフォーマンスを向上させるために文字列の連結を最適化します。これは、StringBuilder オブジェクトを使用して連結結果を蓄積することによって行われます。
null 文字列が見つかった場合:
次のコードを考えてみましょう:
String s = null; s = s + "hello"; System.out.println(s); // prints "nullhello"
コンパイラはこのコードを次のように最適化します。同等:
s = new StringBuilder(String.valueOf(s)).append("hello").toString();
s が null であるため、String.valueOf(s) は「null」を返し、これが StringBuilder に追加されて文字列に変換されます。
以上がJava で Null 文字列を連結すると NullPointerException がスローされないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。