当我使用:
声明一个String时String a = new String("Hello");
创建了2个对象。 1个对象驻留在堆中,另一个对象驻留在String文字池中。
所以当我这样做时:
String b = "Hello";
是否创建了一个新对象,或者是"Hello"
引用的字符串池中的b
?
答案 0 :(得分:0)
创建一个新对象。
'go to nect column
CounterCol = CounterCol + 1
在堆上创建一个对象。它不存储在String文字池中。更多信息here。
new String("Hello")
首先要从池中重用String String b = "Hello"
,但没有。因此,它将在池中创建一个新的"Hello"
String对象 ,并为其分配引用。
您可以在Java Language Specification 3.10.5中阅读有关字符串文字的更多信息。
我们可以test引用指向不同的对象:
"Hello"
按预期打印String a = new String("Hello");
String b = "Hello";
System.out.println(a == b);
。
答案 1 :(得分:0)
我在谈论Java语言。我在很多地方都读到了
String a = new String("Hello")
创建2个对象。一个是在堆中。你能否告诉我其他对象在哪里创建?