三种变量的特点
成员变量
- 成员变量处在类中方法外
- 成员变量随着对象的创建而创建,随对象的消失而消失
- 成员变量由类的对象进行调用
- 成员变量存储在堆内存中
- 成员变量具有默认的初始值
数据类型 | 默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | ‘\u0000’ 1 |
float | 0.0f |
double | 0.0 |
boolean | false |
引用数据类型 | null |
局部变量
- 局部变量处在方法内
- 局部变量随着方法的压栈调用而存在,随着方法的执行结束弹栈而消失
- 局部变量存储在栈内存中,随着方法的使用结束而释放
- 局部变量不具有默认初始值,需要自行初始化
静态变量
- 静态变量用static修饰,处于成员变量的位置
- 静态变量随着类的加载而存在,随着类的执行结束而消失
- 静态变量存储在堆内存中(JDK8以前存储在方法区中)
静态成员的存储位置 - 静态变量可由类或者类的对象进行调用
char的默认初始值为’\u0000’,该Unicode字符代表的是空格 ↩︎