Java基础-成员变量、局部变量和静态变量

时间:2022-01-25 19:36:40
静态变量
定义:
被static关键字修饰的成员变量(局部变量不能被static所修饰)
特点:
1.随着类的加载而加载
2.优先于对象而存在
3.被类的所有对象所共享
3.可以被类名调用,也可以通过对象调用
内存:
1.被加载到方法区的静态区
注意:
1.静态变量不能使用this,因为this代表调用它的对象,而静态变量优先于对象而存在,不能用未存在的调用已存在的
2.静态变量能被静态方法和非静态方法调用(静态方法只能调用静态变量,非静态方法可以调用静态变量和非静态变量)


静态变量和成员变量的区别


1.所属不同
静态变量:属于类,可以称为类变量
成员变量:属于对象,被称为实例变量/对象变量

2.内存位置不同
静态变量:分配到方法区的静态区
成员变量:分配到堆内存中

3.生命周期不同
静态变量:随着类的加载而创建,随着类的消失而消失
成员变量:随着对象的创建而创建,随着对象的消失而消失

4.调用方法不同:
静态变量:可以通过类名和对象调用
成员变量:通过对象调用

成员变量和局部变量的区别:


1.所属类的位置不同
成员变量:定义在类中,方法外的变量
局部变量:定义在方法中或者方法上的变量

2.在内存中位置不同
成员变量:分配到堆内存中
局部变量:分配到栈内存中

3.生命周期不同:
成员变量:随着对象的创建而创建,随着对象的消失而消失
局部变量:随着方法的调用而创建,随着方法调用完毕而消失

4.初始化值不同:
成员变量:系统会给默认初始化值
局部变量:系统不会自动给默认值,需要自己指定默认值后才能使用

5.修饰符不同:
成员变量:可以被 static private public protect 所修饰
局部变量:不能被 static private public protect 所修饰