变量分类
定义位置不同
成员变量定义在类中,成员方法之外
局部变量定义在局部范围内,如方法参数,方法内部,循环结构中等
作用范围不同(空间)
成员变量在整个类内有效,与声明位置无关
局部变量只在所属的{}内有效,从声明位置开始有效
public class Test {
void method() {
int i = 10; // 局部变量
System.out.println(i); // 10
System.out.println(d); // 0.0
}
int d; // 成员变量
}
生命周期不同(时间)
实例变量随着对象创建而存在,随着对象回收而消失
静态变量随着类的加载而存在,随着类的卸载而消失
局部变量随着方法进栈而存在,随着方法出栈而消失
内存位置不同
实例变量存储在堆内存的对象中,是对象的特有数据
类变量存储在方法区的静态区中,是对象的共享数据
局部变量存储在栈内存中
默认初始化值
成员变量有默认初始化值
局部变量无默认初始化值
- 声明:数据类型 变量名称;
- 初始化:变量有值
对于基本数据类型变量,初始化就是赋值
对于引用数据类型变量,初始化就是new出来(开辟了堆内存)或 赋空常量null值(未开辟堆内存)