文字列リテラルで String#intern() を使用する場合
String#intern() は、文字列プールから既存の文字列を返します。存在するか、追加して、追加された参照を返します。文字列リテラルは自動的にインターンされますが、特定のシナリオでは intern() を手動で呼び出す必要がある場合があります。
文字列リテラルの自動インターニング
提供されたサンプル コードでは:
String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = "Rakesh".intern();
s1 と s3 はどちらも同じ文字列を表します。 interning は Java の文字列リテラルに暗黙的に適用されます。これが、s1 == s2 と s1 == s3 の両方の行が true と評価される理由です。
intern() の使用例
intern() の使用が関連します。文字列リテラルではない文字列を扱う場合。例:
String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = new String("Rakesh"); String s4 = new String("Rakesh").intern();
この例では、自動インターニングまたは intern() の明示的な呼び出しにより、s1、s2、および s4 は定数プール内の同じ String を表します。ただし、s3 は定数プールにない新しい String インスタンスを参照します。
s4 で intern() を明示的に呼び出すことにより、「Rakesh」が String プールにすでに存在するかどうかを効果的にチェックします。そうでない場合は、それを追加し、追加された文字列の参照を返します。これにより、メモリ内の重複した String オブジェクトが減り、文字列の等価比較が促進されるため、String の使用が最適化されます。
以上がJava で `String#intern()` を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。