Java 为什么这是真的,不是吗;从不同的地点来看,这不是假的吗
为什么这仍然是正确的,它们不是指堆内存中的不同位置吗?JVM将字符串文本存储在池中以供重用。此处有更多信息:这在(和15.28,其中有3.10.5参考资料)中介绍: 字符串文字是对类Java 为什么这是真的,不是吗;从不同的地点来看,这不是假的吗,java,Java,为什么这仍然是正确的,它们不是指堆内存中的不同位置吗?JVM将字符串文本存储在池中以供重用。此处有更多信息:这在(和15.28,其中有3.10.5参考资料)中介绍: 字符串文字是对类string(,)实例的引用 此外,字符串文本总是引用类string的同一实例。这是因为使用方法string.intern,字符串文本(或者更一般地说,常量表达式()的值字符串)被“interned”以共享唯一实例 否。他们指的不是不同的地点。由于它是一个字符串文字,因此它不会为y创建新对象,而是引用已在字符串池中为
string
(,)实例的引用
此外,字符串文本总是引用类string
的同一实例。这是因为使用方法string.intern
,字符串文本(或者更一般地说,常量表达式()的值字符串)被“interned”以共享唯一实例
否。他们指的不是不同的地点。由于它是一个字符串文字,因此它不会为
y
创建新对象,而是引用已在字符串池中为x
创建的相同对象。它们不是引用堆内存中的不同位置吗?不,它们都是编译时常量,因此位于字符串池中,指向此答案中图像的同一个内存可能的副本,这有助于您理解问题:
String x = "Hello!";
String y = "Hello!";
System.out.println( x == y );