在下面的声明中
System.out.println("Morning");
包含值“Morning”的对象是在字符串池中创建的。而且我们没有明确存储它的地址。但这个对象仍然是可达的。
如果我们尝试重新做System.out.println("Morning");
JVM 重用之前创建的对象,因为它存在于字符串池中,它不会创建新对象。
即使我们没有显式存储它的地址,JVM 如何跟踪这个对象?
"Morning"
是一个字符串文字。当加载类时,所有字符串文字都会添加到字符串常量池中。
我们没有明确存储它的地址
我们是否存储引用与将字符串文字添加到常量池无关。里面的一切""
去那里。
但这个对象仍然是可达的。
同样,可达性与从字符串常量池中添加和检索无关。 JVM 的工作方式可能特定于 JVM,但某些 JVM 可能会在类加载期间将类常量字符串添加到字符串常量池中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)