String 作为文本和新运算符创建的字符串

String 作为文本和新运算符创建的字符串,string,new-operator,literals,pool,String,New Operator,Literals,Pool,当我使用以下命令声明字符串时: String a = new String("Hello"); 创建了两个对象。1个对象位于堆中,另一个位于字符串文字池中 因此,当我这样做时: String b = "Hello"; 是否创建了一个新对象,或者是否从引用到b的字符串池中创建了一个新对象 解释 newstring(“Hello”)在堆上创建一个对象。它不存储在字符串文本池中。更多信息 String b=“Hello”首先希望重用池中的字符串“Hello”,但没有。因此,它将在池中创建一个新的

当我使用以下命令声明字符串时:

String a = new String("Hello");
创建了两个对象。1个对象位于堆中,另一个位于字符串文字池中

因此,当我这样做时:

String b = "Hello";

是否创建了一个新对象,或者是否从引用到
b
的字符串池中创建了一个新对象

解释
  • newstring(“Hello”)
    在堆上创建一个对象。它不存储在字符串文本池中。更多信息

  • String b=“Hello”
    首先希望重用池中的字符串
    “Hello”
    ,但没有。因此,它将在池中创建一个新的
    “Hello”
    字符串对象,并为其分配引用

您可以在中阅读有关字符串文字的更多信息

试验 我们可以确定引用指向不同的对象:

String a = new String("Hello");
String b = "Hello";
System.out.println(a == b);

按预期打印
false

将创建一个新对象

解释
  • newstring(“Hello”)
    在堆上创建一个对象。它不存储在字符串文本池中。更多信息

  • String b=“Hello”
    首先希望重用池中的字符串
    “Hello”
    ,但没有。因此,它将在池中创建一个新的
    “Hello”
    字符串对象,并为其分配引用

您可以在中阅读有关字符串文字的更多信息

试验 我们可以确定引用指向不同的对象:

String a = new String("Hello");
String b = "Hello";
System.out.println(a == b);

按预期打印
false

我说的是Java语言。我在很多地方读到过

String a = new String("Hello") 

创建2个对象。一堆。您能告诉我另一个对象是在哪里创建的吗?

我说的是Java语言。我在很多地方读到过

String a = new String("Hello") 

创建2个对象。一堆。您能告诉我另一个对象是在哪里创建的吗?

这不取决于所使用的语言吗?@SDC,是Java吗?如果是,请标记为是。这不取决于所使用的语言吗?@SDC,是Java吗?如果是,请贴上标签。