我有以下测试:
public class EqualityTest
{
String one = new String("Hello world");
String two = new String("Hello ") + new String("world");
@Test
public void testStringPool()
{
assertFalse(one == two); // FALSE!!!
assertTrue(one.equals(two));
assertTrue(one.intern().equals(two.intern()));
}
}
我本来预计,由于 Java 的字符串池性质,VM 将分配一个和两个指向池中相同的字符串。为什么在这种情况下我的理解是错误的?