ホームページ >Java >&#&チュートリアル >Java で `String#intern()` を使用する必要があるのはどのような場合ですか?

Java で `String#intern()` を使用する必要があるのはどのような場合ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-26 06:06:14914ブラウズ

When Should You Use `String#intern()` in Java?

文字列リテラルで 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。