【发布时间】:2016-02-16 07:25:50
【问题描述】:
String s1 = "foo";
我听说 String Literal Pool 是一个堆的区域。 从那句话中,我认为 String 变量必须具有对实际值的引用。
我尝试使用 Eclipse 调试器检查此变量,但是,除了 "foo" 本身之外,我什么也看不到。
s1 里面是什么?
是参考(地址)吗?
我怎么看出来的?
【问题讨论】:
-
它是引用的值,就像在任何其他
Object中一样。 -
我试图打印出该值,但由于 toString() 已被覆盖,因此失败了。
-
您不能打印引用的“值”,就像在 C 中打印指针的整数值一样。Java 非常刻意地隐藏了引用存储方式的内部结构。 JVM 可以使用它认为合适的任何值。
-
它只是对池中字符串对象的引用(地址)。
-
标准是打印hashcode