Java の String intern() メソッドの目的は何ですか?

PHPz
リリース: 2023-09-20 13:29:03
転載
920 人が閲覧しました

String は Java の文字シーケンスを格納するクラスで、java.lang パッケージに属します。 String オブジェクトが作成されると、変更することはできません (不変)。

ストレージ

すべての String オブジェクトは、String Constant Pool と呼ばれるヒープ領域内の別のメモリ場所に保存されます。

文字列値が定義されるたびに、JVM は指定された値を持つ文字列オブジェクトを文字列定数プールに作成します。したがって、上記のプログラムを実行すると、文字列定数プールに 2 つの文字列値が作成されます。

String intern() 方法在 Java 中的作用是什么?

intern() メソッド

このメソッドは、一意の文字列値のプールから現在の文字列の値を返します。特定の String に対してこのメ​​ソッドを呼び出すと、String 定数プールにその String と等しい String が既に含まれている場合は常にそのメソッドが返されます (Object クラスの equals メソッドに従って)。そうでない場合は、現在の文字列が文字列定数プールに追加され、それへの参照が返されます。

つまり、同じ内容を持つ 2 つの文字列に対してこのメ​​ソッドを呼び出した場合、それらは同じメモリを共有することが保証されます。

この方法では、重複した値が複数出現した場合に占有されるメモリを簡単に削減できます。

以下では、同じ内容の 2 つの文字列を (new キーワードを使用して) 作成し、「==」演算子を使用して比較します。両方のオブジェクトは同じ値を持ちますが、同じオブジェクト (メモリ) を参照していないため、結果は false になります。

public class InternExample {
   public static void main(String args[]) {
      String str1 = new String("Hello");
      str1 = str1.intern();
      String str2 = "Hello";
      str2 = str2.intern();
      System.out.println(str1.equals(str2));
   }
}
ログイン後にコピー

Output

false
ログイン後にコピー

ただし、2 つのオブジェクトを比較する前に intern メソッドを呼び出すと、両方のオブジェクトが同じメモリを共有することが保証されるため (内容が同じである場合)、結果は本当だろう。

public class InternExample {
   public static void main(String args[]) {
      String str1 = new String("Hello");
      str1 = str1.intern();
      String str2 = new String("Hello");
      str2 = str2.intern();
      System.out.println(str1==str2);
   }
}
ログイン後にコピー

出力

true
ログイン後にコピー

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

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!