如何通过System.out.println(“Morning”)创建对象,REACHABLE?

在以下声明中

System.out.println("Morning"); 

包含值“Morning”的对象在String Pool中创建。 而且我们没有明确地存储它的地址。 但是这个对象仍然可以访问。

如果我们尝试重新制作System.out.println("Morning"); JVM重用以前创建的对象,因为它存在于字符串池中,它不会创建新对象。

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

"Morning"是一个字符串文字。 加载类时,所有字符串文字都添加到String常量池中。

而且我们没有明确地存储它的地址

我们是否存储引用与将String文字添加到常量池无关。 ""一切都在那里。

但是这个对象仍然可以访问。

同样,可达性与从String常量池中添加和检索无关。 JVM如何实现它可能是特定于JVM的,但是一些JVM可以在类加载期间将类常量字符串添加到String常量池。