使用新的String构造函数是否足以确保两个字符串具有不同的引用?

时间:2015-10-27 08:20:22

标签: java

今天我写了一些简单的junit测试用例。其中一个调用方法,检查string是否等于之前存储的其他字符串(在这种情况下,字符串应该具有相同的值)。

在工作应用程序中,在从一个jvm转到另一个jvm之后将进行比较,因此可能两个字符串将具有不同的引用。在测试中我实际上重用了相同的String。在纯理论中,有人可能会将equals()更改为==而我不会知道这一点。

我已更改它,所以现在使用new String(originalString)创建测试中的第二个String。这足以确保这两个字符串有不同的引用吗?

1 个答案:

答案 0 :(得分:4)

是的,这就够了。当您使用new关键字时,Java语言保证将创建新对象,该对象与之前创建的任何其他对象不同。所以你可以确定java编译器或JIT编译器不会优化这种情况。