1.java内存中的成员分布
方法区:存放class文件;静态地址-->class文件中和堆内存中保存的都是静态标记(地址),该静态成员变量真正的值在静态区;
堆:存放new出来的东西(在堆中开辟一块空间,将类中的东西[成员变量及其赋值,静态地址等]复制一份给新对象);
栈:局部变量、对象名(指向new的地址);
2.成员变量与局部变量的对比
类中位置 |
内存中位置 |
生命周期 |
初始值 |
作用范围 |
|
|
成员变量 |
类中方法外 |
堆内存 |
随着对象的创建而出现, 垃圾回收器的回收而消失 |
有初始值,一般就是数据类型的默认值 |
整个类 |
|
局部变量 |
方法内 |
栈内存 |
随着方法的入栈而出现,方法的出栈而消失 |
没有初始值 |
定义他的地方开始,到定义他的代码块的结束 |