关于Java中新的String和String文字的困惑

时间:2015-01-16 18:51:52

标签: java string

根据凯西塞拉的书:

String s = "abc"; // creates one String object and one
// reference variable

在这种简单的情况下,"abc"将进入池中,s将引用它。

String s = new String("abc"); // creates two objects,
// and one reference variable

在这种情况下,因为我们使用了new关键字,Java将在普通(非池)内存中创建一个新的String对象,而s将引用它。另外,文字" abc"将被放置在游泳池中。


据我所知,当我们使用文字时,它会在池中存储值,但是当我们使用new关键字时,它会在堆中创建对象。在这里我想知道,堆对象是否引用了池数据(String)?

1 个答案:

答案 0 :(得分:-1)

使用new String(" abc")创建的变量与池" abc"不同。字符串。

String string1 = "abc";
String string2 = new String("abc");
System.out.println(string1.equals(string2)); //will print true
System.out.println(string1 == string2); //will print false