ホームページ  >  記事  >  Java  >  JavaのString.intern()関数を使用して、文字列を文字列定数プールに追加します。

JavaのString.intern()関数を使用して、文字列を文字列定数プールに追加します。

PHPz
PHPzオリジナル
2023-07-24 08:48:151185ブラウズ

Java の String.intern() 関数を使用して、文字列定数プールに文字列を追加します。

Java の文字列処理では、文字列の比較と文字列の結合で問題が発生することがよくあります。これは、特に大規模な文字列を扱う場合に発生します。文字列の数。プログラムのパフォーマンスを向上させ、メモリ領域を節約するために、Java では文字列定数プールに文字列を追加するメソッド、つまり String.intern() 関数を使用します。

Java の文字列定数プールは、頻繁に使用される文字列オブジェクトを再利用のために保存するために使用される特別なメモリ領域です。 Java では通常、二重引用符を使用して文字列オブジェクト (例: "Hello") を直接作成します。この方法で作成された文字列オブジェクトは、文字列定数プールに自動的に追加されます。 String.intern() 関数を使用して、文字列オブジェクトを文字列定数プールに手動で追加できます。

次のコード例は、String.intern() 関数を使用して文字列を文字列定数プールに追加する方法を示しています。

public class StringInternExample {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = new String("Hello");
        String str3 = new String("Hello").intern();
        String str4 = new StringBuilder("Hel").append("lo").toString();
        String str5 = new StringBuilder("Ja").append("va").toString().intern();

        System.out.println("str1 == str2: " + (str1 == str2)); // false
        System.out.println("str1 == str3: " + (str1 == str3)); // true
        System.out.println("str1 == str4: " + (str1 == str4)); // false
        System.out.println("str1 == str5: " + (str1 == str5)); // true
    }
}

上の例では、5 つの文字列オブジェクトを作成しました。二重引用符を使用して str1 によって作成された文字列は自動的に文字列定数プールに追加され、一方、new キーワードを使用して str2 によって作成された文字は自動的に追加されます。文字列定数プールへの文字列は、ヒープ内に新しいオブジェクトを作成します。 String.intern() 関数を使用して、str3 を文字列定数プールに手動で追加し、str1 と同じオブジェクトを参照するようにします。 str4 は StringBuilder によって結合された文字列で、str1 で参照されるオブジェクトとは別の新しいオブジェクトがヒープに作成されます。最後に、String.intern() 関数を使用して、str5 を文字列定数プールに追加し、str1 と同じオブジェクトを参照します。

プログラムを実行すると、次の出力結果が得られます。

str1 == str2: false
str1 == str3: true
str1 == str4: false
str1 == str5: true

出力結果からわかるように、String.intern() 関数を使用して文字列を文字列に追加した後、定数プールを使用すると、文字列の参照値を比較することで、2 つの文字列が等しいかどうかを判断できます。文字列定数プール内の文字列オブジェクトは一意であるため、参照判定により文字内容を 1 つずつ比較する必要がなくなり、プログラムのパフォーマンスが向上します。

String.intern() 関数を使用して文字列定数プールに文字列を追加した後、まず定数プール内に同じ内容の文字列があるかどうかを検索し、存在する場合は注意する必要があります。定数プールにオブジェクトがない場合は、定数プールに新しいオブジェクトを作成します。したがって、String.intern() 関数を使用するときはメモリの使用量に注意し、文字列定数プールに大量の文字列オブジェクトを頻繁に追加しないようにする必要があります。

つまり、Java の String.intern() 関数を使用して文字列定数プールに文字列を追加し、文字列オブジェクトを再利用することで、プログラムのパフォーマンスを向上させ、メモリ領域を節約できます。実際の開発では、特定のシナリオに応じて String.intern() 関数を柔軟に使用することで、プログラムの最適化の効果を得ることができます。

以上がJavaのString.intern()関数を使用して、文字列を文字列定数プールに追加します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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