1、类中声明的位置不同:
属性:声明在类内、方法外的变量
局部变量:声明在方法、构造器、代码块内部的变量
2、在内存中分配的位置不同:
属性:随着对象的创建,存储在堆空间中
局部变量:存储在方法对应的栈帧中
(字符串应该是先在常量池中,方法栈帧中应存放地址,未画)
3、生命周期:
属性:随着对象的创建而创建,随着对象的消亡而消亡
局部变量:随着方法对应的栈帧入栈,局部变量会在栈中分配,随着方法对应的栈帧出栈,局部变量消亡
4、作用域:
属性:在整个类的内部都是有效的
局部变量:仅限于声明局部变量所在的方法(或构造器、代码块等)中
5、是否可以有权限修饰符进行修饰:
权限修饰符:public、protected、缺省、private
属性:可以使用权限修饰符进行修饰
局部变量:不能使用权限修饰符进行修饰
6、是否有默认值:
属性:都是默认初始化值
意味着如果未给属性进行显式赋值,也可以直接使用。
局部变量:都没有默认初始化值。
意味着在使用局部变量之前,必须要进行显式的赋值,否则使用则报错。