在类中的位置不同
成员变量:类中方法的外部 局部变量:方法内或者方法声明上
在内存中的位置不同
成员变量:堆内存 局部变量:栈内
生命周期不同
成员变量:随着对象的存在而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
成员变量:有默认的初始化值 局部变量:没有默认的初始化值,必须先定义,赋值,才能使用。
举个例子说明一下——
class Variable {
//成员变量,定义在类中的方法之外,有默认的初始化值
int num; //int型的默认初始化值为0
public void show() {
//局部变量,没有默认初始化值,必须定义时赋值才可使用
//int num2; //这样定义,编译时会报错: 可能尚未初始化变量num2
int num2 = 20;
System.out.println("Variable的局部变量值:"+num2);
System.out.println("Variable的成员变量值:"+num);
}
}
class CallVariable {
public static void main(String[] args) {
Variable vb = new Variable(); //创建一个Variable类的实例
//通过Variable类的实例访问成员变量
System.out.println("Variable的实例调用成员变量:"+vb.num);
vb.show(); //通过Variable类的实例调用公共方法
}
}