文字列リテラルのインターン メソッドを使用する場合
リテラル構文 ("String") を使用して作成された文字列は、自動的に String プールにインターンされます。 JVMによる。その結果、== 演算子は文字列リテラルに対して一貫して動作します。
ただし、new String() で作成された文字列に対してインターンは自動的には行われません。ここで intern() メソッドが関係します。
new String() で作成された String で intern() メソッドを使用すると、その String がプールに追加され、同じ String がすでに存在する場合は既存のオブジェクト インスタンスが返されます。
例:
String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = "Rakesh".intern(); String s4 = new String("Rakesh"); String s5 = new String("Rakesh").intern(); if (s1 == s2) { System.out.println("s1 and s2 are same"); } if (s1 == s3) { System.out.println("s1 and s3 are same"); } if (s1 == s4) { System.out.println("s1 and s4 are same"); } if (s1 == s5) { System.out.println("s1 and s5 are same"); }
出力は次のようになります。 be:
s1 and s2 are same s1 and s3 are same s1 and s5 are same
文字列がインターンされずに new を使用して明示的に作成された s4 を除くすべての場合、JVM の文字列定数プールは同じ不変インスタンスを返します。
JavaTechniques を参照してください。詳細については、「文字列の等価性とインターン」を参照してください。
以上がJava 文字列の `intern()` メソッドを使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。