ホームページ > Java > &#&チュートリアル > Java の String `intern()` メソッドをいつ使用する必要がありますか?

Java の String `intern()` メソッドをいつ使用する必要がありますか?

Barbara Streisand
リリース: 2024-12-04 03:26:13
オリジナル
146 人が閲覧しました

When Should You Use Java's String `intern()` Method?

文字列リテラルとインターン メソッド

質問:

Java では、どのような状況でインターン ( ) 文字列のメソッドリテラル?

答え:

Java は文字列リテラルを自動的にインターンします。これは、その値が定数プールに格納され、複数の文字列オブジェクトによって参照されることを意味します。ただし、 intern() メソッドは、new 演算子を使用して作成された文字列を操作する場合に便利です。

説明:

「Rakesh」などの文字列リテラルは、自動的にインターン生。これは、new String("Rakesh") によって返される文字列参照が常にリテラルの "Rakesh" と同じオブジェクトを指すことを意味します。

ただし、new で作成された文字列はインターンされません。コード String s4 = new String("Rakesh") は、「Rakesh」の値が定数プールにすでに存在している場合でも、メモリ内に新しいオブジェクトを作成します。この新しく作成された文字列を強制的にインターンするには、 String s5 = new String("Rakesh").intern() に示すように、 intern() メソッドを使用できます。

したがって、 intern() メソッドはを使用して作成された場合でも、複数の文字列オブジェクトが定数プール内の同じオブジェクトを参照していることを手動で確認したい場合に使用する必要があります。 new.

例:

次のコードを考えます:

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"); // 1.
}

if (s1 == s3) {
    System.out.println("s1 and s3 are same"); // 2.
}

if (s1 == s4) {
    System.out.println("s1 and s4 are same"); // 3.
}

if (s1 == s5) {
    System.out.println("s1 and s5 are same"); // 4.
}
ログイン後にコピー

出力は次のようになります:

s1 and s2 are same
s1 and s3 are same
s1 and s5 are same
ログイン後にコピー

行 1、2、および 4 は、s1、s2、s3、および s5 がすべて定数プール内の同じオブジェクトを参照します。行 3 は、s4 が s1 と同じ値を持つにもかかわらず、メモリ内の別のオブジェクトであることを示しています。

以上がJava の String `intern()` メソッドをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート