1. 概述
两个对象的内存图如下所示,就是两个对象指向同一个堆内存;
两个对象的内存图(两个对象指向同一个堆内存).png
由上图可知:
1>:首先在方法区中的class文件区的左边开辟:StudentDemo3.class和StudentDemo.class 文件区,并且StudentDemo3中有main()方法、StudentDemo中有变量名:name、age,方法名:study();
2>:main()方法进栈,然后在栈中Student s1;
3>:然后在堆中 new Student(),变量名:name默认值为null,age默认值为0,然后在堆内存中 0x12c,并且让这个地址指向方法区中的study()方法,当study()方法执行完后,在堆内存中消失;
4>:然后给堆中定义 0x2de地址值;
5>:然后把 0x2de地址值赋值给 堆内存的 Student s1,这个时候堆内存中的 name:林青霞,age:28;
6>:由于Student s2 = s1;所以0x2de的地址值也赋值给 Student s2,然后 让s2也指向 堆内存的 0x2de即可;
以上就是两个对象 s1、s2同时指向同一个堆内存;
网友评论