对象的内存图解
以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这时候所调用的成员变量是一样的,都是指向同一个变量