ホームページ >Java >&#&チュートリアル >Java では文字列リテラルが文字列定数プールに格納されるのはなぜですか?

Java では文字列リテラルが文字列定数プールに格納されるのはなぜですか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB転載
2023-09-11 21:17:02845ブラウズ

Java では文字列リテラルが文字列定数プールに格納されるのはなぜですか?

#Java で String オブジェクトを作成するには 2 つの方法があります

#new 演算子を使用します
  • String str = new String("Tutorials Point");
文字列リテラルを使用する
  • String str = "Tutorials Point";
  • Java で new String() を呼び出すと、ヒープ メモリにオブジェクトが作成され、文字列リテラルは文字列定数プール (SCP) に入ります。

オブジェクトの場合、JVM は Java での効率的なメモリ管理のための SCP を使用します。他の Java オブジェクトとは異なり、ヒープ領域で String オブジェクトを管理しませんが、String 定数プールを導入します。 String 定数プールの重要な特徴は、プール内に既に String 定数が存在する場合、同じ String オブジェクトは作成されないことです。

public class SCPDemo {
   public static void main (String args[]) {
      String s1 = "Tutorials Point";
      String s2 = "Tutorials Point";
      System.out.println("s1 and s2 are string literals:");
      System.out.println(s1 == s2);
      String s3 = new String("Tutorials Point");
      String s4 = new String("Tutorials Point");
      System.out.println("s3 and s4 with new operator:");
      System.out.println(s3 == s4);
   }
}

出力

s1 and s2 are string literals:
true
s3 and s4 with new operator:
false

以上がJava では文字列リテラルが文字列定数プールに格納されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。