java内存的结构分析
-
栈:一般存放基本数据类型(局部变量)
-
堆:存放对象(Cat cat , 数组等)
-
方法区:常量池(常量,比如字符串),类加载信息
Person p = new Person;
p.name = "jack";
p.age = 10
- 先加载Person类信息(属性和方法信息,只会加载一次)
- 在堆中分配空间,进行默认初始化。
- 把堆中地址赋给p,p就指向对象
- 进行指定初始化
因为在 b=null
时使得类b在栈区被指向空,所以会在后面无法继续执行,因此会抛出空指针异常NullPointerException
ullPointerException`