中国第八军团
新手报道 :
新兵宿舍
求助问答 :
悬赏问答
技术探讨 :
网络安全
敲敲代码 :
编程开发
资源分享 :
资源下载
论坛生活 :
军团茶座
站务管理 :
论坛版务
主题:1690 回帖:16933 会员:1264 在线:1
发新帖

【java】类引用类型指向对象的内存理解

blackflame 2017-3-8 457
class Car{

String color="黑色";

int num=1;


void run(){

System.out.println("颜色:"+color+"只有"+num+"辆");

}
}


class TestCar{

public static void main(String args){



Car c=new Car();

c.color="白色";

//输出结果1:

c.run();


c.num=22;

Car cc=c;

cc.color="blue";

//输出结果2:

cc.run();


Car c1= new Car();

//输出结果3:

cl.run();


}
}

1、颜色:白色只有1辆

2、颜色:blue只有22辆
3、颜色:黑色只有1辆

这里清晰说明了两个类引用类型c,cc指向同一个对象(堆内存中)的问题。

从结果可以看出,成员属性变量也是在堆中的,只要有一个类引用改变了堆中对象里的数据,那第二个引用也是受影响到。

这个需要有图就比较好描述内存的运行过程。
最新回复 (1)
程小诺 2017-3-18
1
唉,兄台贵姓啊
返回



©1999-2017 第八军团
Time: 0.019, SQL: 9