Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这是真的,不是吗;从不同的地点来看,这不是假的吗_Java - Fatal编程技术网

Java 为什么这是真的,不是吗;从不同的地点来看,这不是假的吗

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

为什么这仍然是正确的,它们不是指堆内存中的不同位置吗?

JVM将字符串文本存储在池中以供重用。此处有更多信息:

这在(和15.28,其中有3.10.5参考资料)中介绍:

字符串文字是对类
string
(,)实例的引用

此外,字符串文本总是引用类
string
的同一实例。这是因为使用方法
string.intern
,字符串文本(或者更一般地说,常量表达式()的值字符串)被“interned”以共享唯一实例


。他们指的不是不同的地点。由于它是一个字符串文字,因此它不会为
y
创建新对象,而是引用已在字符串池中为
x
创建的相同对象。

它们不是引用堆内存中的不同位置吗?不,它们都是编译时常量,因此位于字符串池中,指向此答案中图像的同一个内存可能的副本,这有助于您理解问题:
String x = "Hello!";

String y = "Hello!";

System.out.println( x == y );