如何通过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常量池。