我的想法是: x1等价于new StringBuilder().append(new String("c")).append(new String("d")).toString(); 又等价于new String("cd"),所以且不论上述两行输出是什么,应该是同为true或同为false。 而HotSpot 1.8的输出分别是true和false。 第9行输出可以理解,x3指向堆中的"cd"字符串对象,x4指向串池中的"cd"字符串,所以为false。