JDK1.7版本以前,类的静态变量存在方法区中。
JDK1.8版本之后:类的静态变量存在元空间中。
基于以上理论,为什么我在JDK1.6中,运行以下代码,会输出true呢?
public class Test {
public static String cName = "张三";
public static void main(String[] args) {
String dName = "张三";
System.out.println(cName == dName); //true
}
}
按照我的理解:因为cName在方法区,而dName在堆中,两个的内存地址都不一样,使用 == 为什么会返回true呢? 真是百思不得其解,请各位大佬解惑,谢谢