根据凯西塞拉的书:
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)?
答案 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