实例变量和对象赋值 值变化问题
public class Problem {
String name="好容易啊";
public void na() {
Problem a=new Problem();
a.name="一般般";
System.out.println(a.name);
}
public static void main(String[] args) {
Problem a=new Problem();
a.name="好难啊";
a.na();
System.out.println(a.name);
}
}
输出结果:
流程:
1、String name初始化为 好容易啊
2、主方法-创建对象-赋值a.name= 好难啊
调用方法na,na里面赋值a.name= 一般般,打印输出 一般般
3、回到主方法,打印输出a.name ,打印输出 好难啊
有疑问:
1、实例变量String name的值变化了吗?
2、主方法和na方法 a.name的值为什么是两个不同的值?
3、从整体而言,实例变量、主方法、na方法中的name值是不是存放在三个不同的空间?为什么?
25
收起
正在回答
1回答
同学你好,针对你的疑问做如下解答:
1、name的值变化了。实例变量是属于实例对象的,当实例对象的name属性值发生变化时,属于该对象的实例变量的值就会发生变化。
2、主方法中的a.name的值为好难啊。输出来的两个结果分别是:
第一个是a.na()时,na方法中的局部变量a的name属性值,为一般般;
第二个是主方法中的局部变量a的name属性值,为好难啊。
注:na方法中的局部变量a与主方法中的局部变量a是两个毫无关联的不同变量。
3、类中的实例变量name只有创建Problem类对象时才会被加载到堆内存;
主方法及na方法中的name均属于是对象的属性,均存放在堆内存中,对象被回收时变量被销毁;
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星