Java如何决定何时应创建新的String
?
我认为这取决于具体的JVM实现/编译器,但我认为这个测试的结果很有趣,可以提出这个问题:
class A { public String test = "test";}
class B { public String test = "test";}
...
public static void main (String[] args)
{
String test = "test";
System.out.println(test == "test"); // true
System.out.println(test == new String("test")); // false
System.out.println(new A().test == new B().test); // true
}
答案 0 :(得分:3)
String
文字总是被实习,这不是直接依赖于平台的。
除了通过构造函数(new String(someString)
)使用显式初始化惯用法之外。
在这种情况下,会创建一个新的Object
,这会导致引用相等运算符(==
)在您的示例中返回false
。
毋庸置疑,请始终使用equals
进行可靠的String
价值比较,但我怀疑这不属于您问题的范围。