局部变量 | 成员变量 |
在方法内部定义的变量称为局部变量 | 在类内部定义的变量称为成员变量 |
必须先定义后使用 | 必须先定义后使用 |
局部变量没有访问权限修饰符,不能用public、private和protected来修饰,因为它只能在定义它的方法内部使用; | 成员变量有访问权限修饰符 |
局部变量不能用static修饰,没有"静态局部变量" | 成员变量能用static修饰 |
系统不会自动为局部变量赋初值 | 成员变量,系统会自动赋初值;基本类型的值为0,复合类型的值为null |
局部变量的作用域仅限于定义它的方法,在该方法的外部无法访问它 | 成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量 |
局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用域的最后一条语句时,局部变量被销毁 | 类的成员变量,如果是实例成员变量,它和对象的生存期相同。而静态成员变量的生存期是整个程序运行期 |
在同一个方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量,它们互不干涉 | 局部变量可以和成员变量同名,且在使用时,局部变量具有更高的优先级 |
同名的局部变量会屏蔽掉成员变量。为了访问被屏蔽的成员变量,需要使用一个前缀"this",它表示的是"本对象" |