成员变量和局部变量的区别
定义位置
成员变量:类中,方法外
局部变量:方法中,或形式参数中
初始化值
成员变量:有默认初始化值
局部变量:无默认初始化值,必须先赋值再使用
作用范围
成员变量:在类中
局部变量:在方法中
内存中的位置
成员变量:堆内存
局部变量:栈内存
生命周期
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法调用完毕而消失
默认值不同:
成员变量:有默认值
默认值根据数据类型获取:
基本数据类型:
整数类型:0
浮点类型:0.0
字符类型:’\u0000’
布尔类型:false
引用数据类型:null
局部变量:没有默认值
变量的访问原则
局部变量和成员变量重名时,采用就近原则
如果局部位置有,就使用,如果 没有就去本类的成员位置找,有就使用,没有就报错(如果存在继承,则去父类中找)
在方法中指定使用全局的变量使用关键字this来区分
this:
代表当前调用对象
本身不是一个固定的对象,谁来调用所在的资源代表谁
代码示例
/**
* 定义一个类,用来存放全局变量和局部变量,并定义方法进行调用
*/
public class Variable {
//成员变量(全局变量)
int a = 10;
int b = 20;
public void show() {
//局部变量
int a = 100;
int c = 200;
//使用变量
System.out.println(a); //就近原则 100
System.out.println("全局变量a: " + this.a); //10
System.out.println("全局变量a: " + b); //20 因为局部中没有,所以去全局中找
System.out.println(c); //200
}
}
/**
* 定义一个测试类,进行测试全局变量和局部变量的区别
*/
public class TestVariable {
public static void main(String[] args) {
//创建对象
Variable variable = new Variable();
//调用方法
variable.show();
}
}