成员变量和局部变量的区别
成员变量和局部变量的区别
成员变量又称为属性,属于类的成员;而局部变量是指在方法体中定义的变量。可以这样说,编写Java代码离不开变量;但两者存在着不同,如下:
相同点
1、定义变量的格式相同:
数据类型 变量名 = 变量值;
而且都是先声明、后使用,变量都有其作用域
不同点
1、定义的位置:
成员变量(属性):直接定义在类的一对{ }内
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
例如以下代码:
public class Student {
//成员变量、属性
String name;
int age;
boolean isMale;
public void study() {
//局部变量
int time = 10;
System.out.println("学习了"+time+"小时");
}
}
2、关于权限修饰符:
成员变量(属性):在声明时,可以指明其权限,需要用到以下几种权限修饰符:private、public、缺省(默认)、protected
局部变量:不可使用权限修饰符
3、默认初始化的情况:
成员变量(属性):类的属性根据其类型,均有默认初始化值;
局部变量:无默认初始化值
如下 ,在调用局部变量之前,未对局部变量进行显性赋值,导致代码编译失败
注:我们在调用局部变量之前,一定要显示赋值
4、在内存中加载的位置:
成员变量(属性):堆空间(非static)
局部变量:栈空间