我不明白你为什么要创建一个String对象,如下所示:
String stringObj = "";
我认为应该是:
String obj = new String();
答案 0 :(得分:5)
String stringObj = "";
被称为String
文字。他们是interned。
这意味着,如果您有
,请说明String stringObj = "";
String stringObj2 = "";
String stringObj3 = "";
所有3个引用(stringObj
,stringObj2
,stringObj3
)都指向相同的内存位置。
String obj = new String();
此语法在每次调用时都会创建新的String
对象。
这意味着,如果您有:
,请说明String stringObj = new String();
String stringObj2 = new String();
String stringObj3 = new String();
将创建三个新的(单独的)String
个对象,并指向不同的内存位置。
答案 1 :(得分:4)
Java编译器具有从字符串文字创建字符串对象的特殊语法。当你写
String stringObj = "";
Java创建一个新的String
对象,并将其分配给stringObj
。
请注意,这并不等同于new String()
,因为从字符串文字实例化的字符串是interned。这意味着从同一文字创建的字符串不仅对象相等,而且引用相等(即引用相同的对象)。