从语法上:
成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数。
成员变量可以被public,private,static等修饰符修饰,而局部变量不能被访问控制修饰符及static所修饰。
但是成员变量和局部变量都能被final修饰。
从变量在内存中的存储方式上:
如果成员变量使用static修饰,那么这个成员变量属于类,如果没有被static修饰,那么这个成员变量属于对象。
而对象存在于堆内存,局部变量则存在于栈内存。
从变量在内存上的存活时间:
成员变量是对象的一部分,随着对象的创建而存在,而局部变量随着方法的调用而存活,随着方法调用的结束
而自动消失。
从赋值上:
成员变量如果没有被赋初值,则会自动以成员变量类型的默认值赋值,除非被final修饰,则必须定义时即赋值
完毕。而局部变量不会自动赋值。
看图对比:
(文章内容参考自知乎用户:Jon Snow 和lonecloud)
原文:https://www.cnblogs.com/zmznote/p/13459031.html