【发布时间】:2016-11-16 19:21:33
【问题描述】:
通过阅读Oracle JVM架构文档:
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html
运行时常量池是每个类或每个接口的运行时 类文件中 constant_pool 表的表示(第 4.4 节)。
我知道对于每个类,它都有一个运行时常量池(如果我错了,请纠正我)。
但是,我感到困惑的是,如果我有两个不同的类 A 和 B,并且每个类都有一个私有字符串变量,比如 String value = "abc"。
如果我使用== 而不是equals 比较A.value 和B.value,我会得到一个true,这让我认为A 和B 中的"abc" 在同一个运行时常量池中?有人能指出我错在哪里吗?
【问题讨论】:
-
你能链接文档吗?
-
@JigarJoshi 链接
-
如果它们都是私有的,你如何同时访问它们来比较它们?是否创建另一个实例?你能发布你的完整代码吗?
-
离题:为什么要使用
==比较字符串? -
@Andrew 我在 main 中为两个类创建实例并使用 getter 获取值。