实例变量和对象赋值 值变化问题

实例变量和对象赋值 值变化问题


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值是不是存放在三个不同的空间?为什么?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,针对你的疑问做如下解答:

1、name的值变化了。实例变量是属于实例对象的,当实例对象的name属性值发生变化时,属于该对象的实例变量的值就会发生变化。

2、主方法中的a.name的值为好难啊。输出来的两个结果分别是:

    ​第一个是a.na()时,na方法中的局部变量a的name属性值,为一般般;

    ​第二个是主方法中的局部变量a的name属性值,为好难啊。

注:na方法中的局部变量a与主方法中的局部变量a是两个毫无关联的不同变量。

3、类中的实例变量name只有创建Problem类对象时才会被加载到堆内存;
    ​主方法及na方法中的name
均属于是对象的属性,均存放在堆内存中,对象被回收时变量被销毁;

祝学习愉快~


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师