对象的内存图解

以Person举例

public class Person {
    String name;
    String sex;
    int age;

    public void  eat(){

    }
}

1、当执行某个方法(例如main方法)。main方法此时会进入栈内存(每当执行一个方法时,该方法会进入栈内存,直到该方法执行结束便从栈内存弹出)

2、接着在main方法定义一个对象,Person  p ;Person  p也在栈内存中。此时如果不去实例化(new)这个对象,p就等于null。

3、为了访问Person的变量和方法,此时要new Person();

4、new  Person();后再堆内存就会开辟一个空间给Person  并且会有一个地址值,此时在栈内存的p就指向这个地址值。而age等成员变量都还是0或者null,需要赋值。

多个对象指向

此时定义一个Person  p2 = p;

p2便指向了p的内存地址,p2和p这时候所调用的成员变量是一样的,都是指向同一个变量

原文地址:https://www.cnblogs.com/elian91/p/15257200.html