1、代码层面:定义位置不同
局部变量:定义在方法中,或者方法的声明上(方法的形式参数)
成员变量:定义在类中方法外。
2、内存层面:空间不同
局部变量:属于方法,和方法的位置相同,在栈内存的方法的栈帧中
成员变量:属于对象,和对象的位置相同,在堆内存的对象中
3、内存层面:时间不同,生命周期不同
局部变量:随着方法的调用而存在,随着方法的调用结束而消失
成员变量:随着对象的创建而存在,随着对象的消失而消失
4、初始化状态不同
局部变量:没有默认的初始化值,必须手动赋值才可以使用。
成员变量:有默认的初始化值。