成员变量与局部变量的对比
相同
- 定义变量的格式:数据类型 变量名 = 变量值
- 先声明后才可使用
- 变量作用于所对应的作用域内
不同
-
类中声明位置不同
成员变量:定义在类的{ }内
局部变量:声明在方法、方法形参、代码块、构造器形参、构造器内的变量
-
权限修饰符不同
成员变量:可以声明属性时,指明其权限,使用权限修饰符
常用的权限修饰符有:
private 私有
public 公有
protected 保护
default 缺省 默认
局部变量:无法使用
-
默认初始化值
成员变量:根据其类型,都有默认初始化值
整型(byte、short、int、long),0
浮点型(float、double),0.0
字符型(char),0(或’\u0000’)
布尔型(boolean),false
引用数据类型(类、数组/String、接口),null
局部变量:无初始化值
自己赋值“初始化”后再调用,或者直接赋值调用
ps:真正的初始化是十分消耗cpu的
-
在内存中加载的位置
成员变量:加载在堆(heap)中,非static静态
局部变量:加载在栈(stack)中
补充
-
return 数据
使用范围:在方法体中
作用:结束方法并且返回数据
-
匿名对象
理解:创建的对象,没有赋值给一个变量
特点:生命周期为一次
使用:静态显示/传递,因为使用完毕后会被JAVA当做垃圾回收