单一对象内存图

Person p = new Person();
image.png
1、 在栈内存中,创建一个引用变量p,持有对象的地址值
2、 在堆内存中,创建Person对象,并且开辟变量的空间,完成初始化
3、 给堆内存中的元素,分配一个唯一标志,地址值。交给p去保存。
4、 p.name=”lisi”;p.age=20;就去堆内存中找唯一的地址值,找到Person对象,并对其属性进行修改赋值。
5、 p.eat();就去堆内存中找唯一的地址值,找到Person对象,执行Person对象的方法。

练习2:创建多个类

public class Test1 {
       public static void main(String[] args) {
              //p是引用对象,持有了对于Person对象的地址值的引用
              //此时的p,含有属性,但都是默认值
              Person p = new Person();
              //设置属性值
              p.name="lisi";
              p.age=20;
              //创建p2
              Person p2=new Person();
              p2.name="zhangsan";
              p2.age=10;
       }
}
class Person{
       //属性--成员变量
       String name;
       int age;
       //行为--方法
       void eat(){
              System.out.println("吃饭饭");
       }
       void sleep(){
              System.out.println("睡觉觉");
       }
}

多对象内存图
image.png
1、 变量p和变量p1不是一片空间,p1需要开辟新的空间
2、 Person p1=new Person,这时只要有new,就会新开辟空间在堆内存中存入对象

Q.E.D.


努力成就未来