3

我不明白你为什么要创建一个 String 对象,如下所示:

String stringObj = "";

我认为,应该是:

String obj = new String();
4

2 回答 2

5
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对象并指向不同的内存位置。

于 2013-07-06T02:02:54.107 回答
4

Java 编译器具有从字符串字面量创建字符串对象的特殊语法。当你写

String stringObj = "";

Java 创建一个新String对象,并将其分配给stringObj.

请注意,这并不直接等同于new String(),因为从字符串字面量实例化的字符串是intern的。这意味着从同一个字面量创建的字符串不仅对象相等,而且引用相等(即引用同一个对象)。

于 2013-07-06T02:03:54.963 回答