Java での Null 文字列の連結
Java では、Null 文字列の連結は直感に反して、NullPointerException が発生する可能性があります。ただし、この操作は正常に実行され、「null」を含む文字列とその後に連結された文字列が生成されます。
なぜこれが機能するのですか?
Java 言語仕様によると(JLS) 8、§ 15.18.1 では、null 参照は文字列連結中に明示的に文字列「null」に変換されます。この変換はメソッド呼び出しの前に行われ、NullPointerExceptions がスローされないようにします。
どのように機能しますか?
Java コンパイラは、連結式を同等のシーケンスに変換します。メソッド呼び出し。 s = s "hello" の場合、コンパイラは次のようなコードを生成します:
s = new StringBuilder(String.valueOf(s)).append("hello").toString();
StringBuilder の append メソッドは、null 引数を適切に処理します。 null が最初の引数の場合、String.valueOf() が呼び出されて文字列に変換されます。
あるいは、式 s = "hello" s は次のように変換されます。
s = new StringBuilder("hello").append(s).toString();
この場合、append メソッドは 2 番目の引数として null を受け取ります。それを String.valueOf().
注:
Java コンパイラは、StringBuilder プーリングなどの手法を使用して、パフォーマンスを向上させるために文字列の連結を異なる方法で最適化する場合があります。したがって、生成される正確に同等のコードは、使用するコンパイラによって異なる場合があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3