1.在类中的位置不同
成员变量:在类中定义
public class Student{
private int sid;//成员变量
private String name;
}
局部变量:在方法中或者方法的参数列表中
private static int maxNum(int a,int b) {
//局部变量
int result = a>b?a:b;
return result;
}
2.在内存中的位置不同
成员变量:在堆内存中(成员变量属于对象,对象进入堆内存)
局部变量:在栈内存中(局部变量属于方法,进入栈内存)
3.生命周期不同
成员变量:随着对象的创建而存在,随着对象销毁而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失(仅在方法内有效)
4.初始化值不同
成员变量:没有初始化值,引用类型默认为null
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用
注意:
局部变量名称可以和成员变量名称一致,在方法使用的时候,采用就近原则(this)