类变量(静态变量),在方法区分配,属于类本身的属性。有默认值,引用类型的默认值是null,基本数据类型,int就是0,char就是’\u0000‘等。
成员变量,在堆上分配,属于某个实例。有默认值,引用类型的默认值是null,基本数据类型,int就是0,char就是’\u0000‘等。
局部变量,在栈上分配,就是在栈的局部变量表中。随着栈帧的出栈而消失。第一次调用前,必须先初始化。没有默认值。
注意,类变量和成员变量一旦被final修饰,必须在声明的时候就显式初始化,这个时候默认值无效。final修饰局部变量,局部变量不必立刻西安式初始化,在调用前初始化就ok