JavaでStringクラスのintern()メソッドを使用できるのはいつですか?
JVMが個別のヒープメモリを維持していることはわかっています パフォーマンスのための文字列リテラル用。文字列リテラルを宣言すると、このプールに移動します また、同じリテラル値で別の変数が割り当てられている場合、その変数は新しいオブジェクトを作成する代わりにプールから選択されます。 ヒープに保存します 。ただし、文字列が新しい構文を使用して宣言されている場合 r、リテラルがプールに存在する場合でも、新しいオブジェクトが作成されます。これを回避し、JVMにプールからリテラルを選択させるには、 intern()を使用します。 メソッド。
Javaは、デフォルトですべての文字列を自動的にインターンします。 インターン() メソッドは、 nの文字列で使用できます ew String() ==演算子でそれらを比較するため。
例
public class StringInternClassTest { public static void main(String[] args) { String s1 = "Tutorix"; String s2 = "Tutorix"; String s3 = new String("Tutorix"); final String s4 = s3.intern(); String s5 = "?Tutorix".substring(1); String s6 = s5.intern(); System.out.println(s1 == s2); System.out.println(s2 == s3); System.out.println(s3 == s4); System.out.println(s1 == s3); System.out.println(s1 == s4); System.out.println(s1 == s5); System.out.println(s1 == s6); System.out.println(s1.equals(s2)); System.out.println(s2.equals(s3)); System.out.println(s3.equals(s4)); System.out.println(s1.equals(s4)); System.out.println(s1.equals(s3)); } }
出力
true false false false true false true true true true true true
-
JavaでのStringintern()メソッドの役割は何ですか?
文字列は、文字のシーケンスを格納するJavaのクラスであり、 java.langに属します。 パッケージ。 Stringオブジェクトを作成すると、それらを変更することはできません(不変)。 ストレージ すべてのStringオブジェクトは、String Constant poolと呼ばれるヒープ領域の別のメモリ位置に格納されます。 。 文字列値を定義するときはいつでも、JVMは文字列定数プールに指定された値で文字列オブジェクトを作成します。したがって、上記のプログラムを実行すると、2つの文字列値が文字列定数プールに作成されます。 intern()メソッド このメソッドは、一意
-
Javaでpack()メソッドを使用できるのはいつですか?
pack() メソッドはウィンドウで定義されています Javaのクラスであり、すべてのコンテンツが適切なサイズ以上になるようにフレームのサイズを設定します。 pack()の代替 メソッドは、 setSize()を呼び出して、フレームサイズを明示的に確立することです。 またはsetBounds() メソッド。通常、 pack()を使用します setSize()よりもメソッドを呼び出す方が望ましい パックはフレームレイアウトマネージャーにフレームサイズを任せ、レイアウトマネージャーはプラットフォームの依存関係やコンポーネントサイズに影響を与えるその他の要因にうまく適応できるためです。 構文 p