Java 类的成员——成员变量

发布时间 2023-04-19 10:51:51作者: 晓枫的春天

如何声明成员变量

语法格式:

[修饰符1] class 类名{
    [修饰符2] 数据类型 成员变量名 [= 初始化值]; 
}

说明:

–           位置要求:必须在类中,方法外

–           修饰符2(暂不考虑)

  • 常用的权限修饰符有:private、缺省、protected、public
  • 其他修饰符:static、final

–           数据类型

  • 任何基本数据类型(如int、Boolean) 或 任何引用数据类型。

–           成员变量名

  • 属于标识符,符合命名规则和规范即可。

–           初始化值

  • 根据情况,可以显式赋值;也可以不赋值,使用默认值

示例:

public class Person{
    private int age;             //声明private变量 age
    public String name = “Lila”;    //声明public变量 name
}

成员变量 vs 局部变量

1、变量的分类:成员变量与局部变量

在方法体外,类体内声明的变量称为成员变量。

在方法体内部等位置声明的变量称为局部变量。

 

成员变量 与 局部变量 的对比

相同点:   

–           变量声明的格式相同: 数据类型 变量名 = 初始化值

–           变量必须先声明、后初始化、再使用。

–           变量都有其对应的作用域。只在其作用域内是有效的

不同点:

1、声明位置和方式 (1)实例变量:在类中方法外 (2)局部变量:在方法体{}中或方法的形参列表、代码块中

2、在内存中存储的位置不同 (1)实例变量:堆 (2)局部变量:栈

3、生命周期 (1)实例变量:和对象的生命周期一样,随着对象的创建而存在,随着对象被GC回收而消亡,  而且每一个对象的实例变量是独立的。 (2)局部变量:和方法调用的生命周期一样,每一次方法被调用而在存在,随着方法执行的结束而消亡,  而且每一次方法调用都是独立。

4、作用域 (1)实例变量:通过对象就可以使用,本类中直接调用,其他类中“对象.实例变量” (2)局部变量:出了作用域就不能使用

5、修饰符(后面来讲) (1)实例变量:public,protected,private,final,volatile,transient等 (2)局部变量:final

6、默认值 (1)实例变量:有默认值 (2)局部变量:没有,必须手动初始化。其中的形参比较特殊,靠实参给它初始化。

3、对象属性的默认初始化赋值

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。

4、举例

class Person {//人类
    //1.属性
    String name;//姓名
    int age = 1;//年龄
    boolean isMale;//是否是男性

    public void show(String nation) {
        //nation:局部变量
        String color;//color:局部变量
        color = "yellow";
    }
}

测试类

//测试类
class PersonTest {
    public static void main(String[] args) {
        Person p = new Person();
        p.show("CHN");
    }