我不明白你为什么要创建一个 String 对象,如下所示:
String stringObj = "";
我认为,应该是:
String obj = new String();
String stringObj = "";
被称为String
字面量。他们被拘留了。
这意味着,让我们说,如果你有
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
对象并指向不同的内存位置。
Java 编译器具有从字符串字面量创建字符串对象的特殊语法。当你写
String stringObj = "";
Java 创建一个新String
对象,并将其分配给stringObj
.
请注意,这并不直接等同于new String()
,因为从字符串字面量实例化的字符串是intern的。这意味着从同一个字面量创建的字符串不仅对象相等,而且引用相等(即引用同一个对象)。