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 Perso