今天我写了一些简单的junit测试用例。其中一个调用方法,检查string是否等于之前存储的其他字符串(在这种情况下,字符串应该具有相同的值)。
在工作应用程序中,在从一个jvm转到另一个jvm之后将进行比较,因此可能两个字符串将具有不同的引用。在测试中我实际上重用了相同的String。在纯理论中,有人可能会将equals()
更改为==
而我不会知道这一点。
我已更改它,所以现在使用new String(originalString)
创建测试中的第二个String。这足以确保这两个字符串有不同的引用吗?
答案 0 :(得分:4)
是的,这就够了。当您使用new
关键字时,Java语言保证将创建新对象,该对象与之前创建的任何其他对象不同。所以你可以确定java编译器或JIT编译器不会优化这种情况。