关于java成员变量、局部变量的存储问题
首先这个问题肯定是一个老问题了,我是新手 ,上午本来想百度看看的,但是各种各样的答案让我实在不知道怎么去系统的理解这个问题,废话不说上代码
public class Test {
String s1 = "abc";
String s2 = "abc";
public static void main(String[] args) {
Test test = new Test();
System.out.println(test.s1==test.s2); //true
}
}
这是一个很easy的代码,如果单从代码角度而言 ,String s1 = “abc”这步将“adc”对应的内存地址存在栈中,s1指向这个地址。s2同上。
但是在main中,我是new了一个Test出来,这个new Test()显然是个对象放在堆中,那这个对象所有的属性不也应该在堆中么,那test.s1和test.s2是不是也应该在堆中么?
还有个问题是这里的test.s1和test.s2怎么会相等的