Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでのStringintern()メソッドの役割は何ですか?


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

ストレージ

すべてのStringオブジェクトは、String Constant poolと呼ばれるヒープ領域の別のメモリ位置に格納されます。 。

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

JavaでのStringintern()メソッドの役割は何ですか?

intern()メソッド

このメソッドは、一意の文字列値のプールから現在の文字列の値を返します。特定の文字列でこのメソッドを呼び出すときはいつでも、文字列定数プールにすでにそれに等しい文字列が含まれている場合(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));
   }
}

出力

false

ただし、比較する前に両方のオブジェクトでinternメソッドを呼び出すと、両方のオブジェクトが同じコンテンツを持っている場合に同じメモリを共有することが保証されるため、結果はtrueになります。

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

  1. JavaのStringIndexOutOfBoundsExceptionとは何ですか?

    文字列は、Javaで文字のシーケンスを格納するために使用され、オブジェクトとして扱われます。 java.langパッケージのStringクラスは、文字列を表します。 文字列は、(他のオブジェクトのように)新しいキーワードを使用するか、(他のプリミティブデータ型のように)リテラルに値を割り当てることによって作成できます。 String stringObject = new String("Hello how are you"); String stringLiteral = "Welcome to Tutorialspoint"; 文字列には文字の配列

  2. JavaでのsetBounds()メソッドの使用は何ですか?

    レイアウト マネージャー 追加されたコンポーネントの位置とサイズを自動的に決定するために使用されます。レイアウトマネージャーがない場合は、コンポーネントの位置とサイズを手動で設定する必要があります。 setBounds() このような状況では、メソッドを使用して位置とサイズを設定します。コンポーネントの位置とサイズを手動で指定するには、フレームのレイアウトマネージャーを nullにすることができます。 。 setBounds() setBounds() メソッドには4つの引数が必要です。最初の2つの引数は、x座標とy座標です。 左上の コーナー コンポーネントの3番目の引数は幅です コ