Java 通过System.out.println(“Morning”)创建的对象如何访问?

Java 通过System.out.println(“Morning”)创建的对象如何访问?,java,string,Java,String,在以下声明中 System.out.println("Morning"); 包含值“Morning”的对象在字符串池中创建。我们并没有显式地存储它的地址。但是这个对象仍然是可以到达的 如果我们尝试重新执行System.out.println(“早上”)JVM重用先前创建的对象,因为它存在于字符串池中,而不创建新对象 JVM如何跟踪这个对象,即使我们没有显式地存储它的地址 “Morning”是字符串文本。加载类时,所有字符串文字都会添加到字符串常量池中 我们并没有显式地存储它的地址 我们是否存储

在以下声明中

System.out.println("Morning");
包含值“Morning”的对象在字符串池中创建。我们并没有显式地存储它的地址。但是这个对象仍然是可以到达的

如果我们尝试重新执行
System.out.println(“早上”)JVM重用先前创建的对象,因为它存在于字符串池中,而不创建新对象

JVM如何跟踪这个对象,即使我们没有显式地存储它的地址

“Morning”
是字符串文本。加载类时,所有字符串文字都会添加到字符串常量池中

我们并没有显式地存储它的地址

我们是否存储引用中的字符串与向常量池中添加字符串文字无关。
中的所有内容都在那里

但是这个对象仍然是可以到达的


同样,可达性与从字符串常量池添加和检索无关。JVM的工作方式可能特定于JVM,但某些JVM可以在类加载期间将类常量字符串添加到字符串常量池。

什么是“类常量字符串”?在类加载过程中,它是如何添加到字符串常量池的?使用
javap-vyourclassname
您可以自己查看它:@阿米拉桑