按数据类型分
- 基本数据类型
- 引用数据类型
按在类中声明的位置分
-
成员变量
在使用前都经历过默认初始化赋值
-
类变量
static修饰的
在linking的prepare阶段,会给类变量默认赋值
然后在initial阶段,给类变量显式赋值,即静态代码块赋值(如果你有的话)
-
实例变量
随着对象的创建,会在堆空间中分配实例变量空间,并进行默认赋值
-
-
局部变量
虚拟机不会对它进行初始化,要使用,必须手动初始化
小知识:
局部变量表中的变量是重要的垃圾回收根节点,只有被局部变量表中直接或间接引用的对象不会被回收。
在栈帧中,与性能调优关系最为密切的部分就是局部变量表
在方法执行时,虚拟机使用局部变量表完成方法的传递(还记得栈的五个结构中的动态链接吗,跟它有关,它存在着方法的符号引用)
网友评论