1. 从语法形式上:成员变量属于类,局部变量属于方法或者方法的参数;成员变量可以被public,protected,private和static修饰,局部变量不可以;但是二者均可以被final关键字修饰。
2.从变量在内存的存储方式上:如果成员变量是static修饰,那么这个成员变量属于类,如果没有static修饰,那么这个成员变量属于实例;对象存于堆内存,如果局部变量为基本数据类型,那么存储在栈内存,如果为引用数据类型,那存放的是指向堆内存对象的引用或者指向常量池中的地址。
3. 从变量在内存中的生存时间上:成员变量是对象的一部分,它随着对象的创建而存在;而局部变量随着方法的调用而消失。
4. 成员变量如果没有被赋初值,则会以默认值自动赋值(final修饰必须显式赋值),而局部变量不会自动赋值。