JAVA基础-02实例变量和类变量区别

0x00 类变量

类变量(Class Variables),也称为静态变量(Static Variables),是在类级别声明的变量,与类的所有实例共享相同的值。与实例变量不同,类变量不属于对象的特定实例,而是属于整个类。类变量在类加载时被初始化,并且在类的所有实例之间共享相同的值。

类变量通常用于存储与整个类相关的数据,如常量、共享配置、计数器等。它们可以在类的任何方法中访问,并且无需创建类的实例即可访问。

0x01 实例变量

实例变量(Instance Variables)是在类的实例(对象)中定义的变量,每个类的实例都有一份独立的实例变量副本。它们用于存储对象的特定状态和数据,不同的对象可以有不同的实例变量值。实例变量通常在类的成员变量部分声明,而不是在方法内部。

0x02 类变量和实例变量的区别

2.1 作用范围:

实例变量:每个类的实例(对象)都有一份独立的实例变量副本,它们的值在每个对象之间可以不同。
类变量:类变量在整个类中只有一个副本,所有对象共享相同的类变量值。

2.2 初始化:

实例变量:实例变量通常在对象创建时通过构造方法初始化。每个对象可以具有不同的初始值。
类变量:类变量在类加载时被初始化,通常在类定义中赋初值。

2.3 访问方式:

实例变量:实例变量通过对象访问,即 对象名.实例变量名。
类变量:类变量可以通过类名直接访问,即 类名.类变量名。

2.4 作用域:

实例变量:实例变量的作用域限制在声明它们的类的实例中,每个对象都有自己的实例变量。
类变量:类变量的作用域在整个类内部,所有对象共享相同的类变量。

2.5 生命周期:

实例变量:实例变量的生命周期与对象的生命周期相同。当对象被垃圾回收时,实例变量也会被销毁。
类变量:类变量的生命周期在整个程序运行期间,只有在类被卸载时才会被销毁。

2.6 用途:

实例变量:用于存储每个对象的状态和数据,适合表示对象的属性。
类变量:用于存储与整个类相关的信息,例如共享的配置、常量等。

0x03 代码分析

让我们通过一个示例来更详细地说明实例变量和类变量之间的区别:

假设我们有一个名为 Person 的类,用于表示人员信息。我们可以在这个类中使用实例变量和类变量来表示人员的不同属性。

public class Person {
    // 实例变量
    String name;    // 姓名
    int age;        // 年龄

    // 类变量
    static int totalCount = 0;  // 总人数

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
        totalCount++;  // 每次创建对象,类变量增加
    }

    // 实例方法,显示人员信息
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }

    // 类方法,显示总人数
    public static void displayTotalCount() {
        System.out.println("Total people: " + totalCount);
    }

    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Bob", 30);

        person1.displayInfo();
        person2.displayInfo();

        Person.displayTotalCount();  // 访问类方法以显示总人数
    }
}

代码输出
在这里插入图片描述

在这个示例中,Person 类有一个实例变量 name 和一个实例变量 age,用于表示每个人的姓名和年龄。类还有一个类变量 totalCount,用于跟踪创建的总人数。

main 方法中,我们创建了两个 Person 对象,并分别调用了实例方法 displayInfo() 来显示每个人的信息。同时,我们还调用了类方法 displayTotalCount() 来显示总人数。

需要注意以下几点:

每个对象都有自己的 nameage 实例变量,它们在不同对象之间可以不同。
totalCount 类变量在所有对象之间是共享的,每次创建对象都会增加。
实例方法和类方法都可以访问实例变量和类变量,但类方法中只能访问静态(类)变量。
这个例子突显了实例变量和类变量的不同特性和用途。实例变量用于存储对象的属性,而类变量用于存储与整个类相关的信息。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值