首页 > Java > java 成员变量中实例变量和静态变量的区别

java 成员变量中实例变量和静态变量的区别

2025-01-24 12:00:25
在 Java 中,实例变量和静态变量(类变量)都属于成员变量,它们在定义、存储位置、生命周期、访问方式等方面存在明显区别,以下是详细介绍并附带代码示例:

1. 定义与声明

 

  • 实例变量:定义在类中,但在方法、构造函数或代码块之外,没有 static 关键字修饰。每个类的实例都有自己独立的实例变量副本。
  • 静态变量:同样定义在类中且在方法等外部,但使用 static 关键字修饰。静态变量属于类本身,而不是类的某个实例,该类的所有实例共享同一个静态变量。

2. 存储位置

 

  • 实例变量:存储在堆内存中,因为它们与类的实例(对象)相关联,对象存于堆中。
  • 静态变量:在 Java 8 之前存储在方法区,Java 8 及以后存储在元空间,它们在类加载时就被分配内存。

3. 生命周期

 

  • 实例变量:随着对象的创建而创建,随着对象被垃圾回收机制回收而销毁。
  • 静态变量:在类加载时创建,在类被卸载时销毁,其生命周期贯穿整个程序运行期间。

4. 访问方式

 

  • 实例变量:需要通过类的实例(对象)来访问。
  • 静态变量:可以通过类名直接访问,也可以通过类的实例访问(不过不推荐这种方式,因为会混淆静态变量和实例变量的概念)。
public class VariableDifference {
    // 实例变量
    int instanceVariable;
    // 静态变量
    static int staticVariable;

    // 构造函数,用于初始化实例变量
    public VariableDifference(int value) {
        this.instanceVariable = value;
    }

    public static void main(String[] args) {
        // 创建两个对象
        VariableDifference obj1 = new VariableDifference(10);
        VariableDifference obj2 = new VariableDifference(20);

        // 访问实例变量
        System.out.println("obj1 的实例变量值: " + obj1.instanceVariable);
        System.out.println("obj2 的实例变量值: " + obj2.instanceVariable);

        // 为静态变量赋值
        VariableDifference.staticVariable = 30;
        // 通过类名访问静态变量
        System.out.println("通过类名访问静态变量值: " + VariableDifference.staticVariable);
        // 通过对象访问静态变量
        System.out.println("通过 obj1 访问静态变量值: " + obj1.staticVariable);
        System.out.println("通过 obj2 访问静态变量值: " + obj2.staticVariable);

        // 修改静态变量的值
        obj1.staticVariable = 40;
        // 所有实例看到的静态变量值都改变了
        System.out.println("修改后通过类名访问静态变量值: " + VariableDifference.staticVariable);
        System.out.println("修改后通过 obj2 访问静态变量值: " + obj2.staticVariable);
    }
}

 

代码解


  • 实例变量部分instanceVariable 是实例变量,每个对象 obj1 和 obj2 都有自己独立的 instanceVariable 副本,通过不同对象访问时会得到不同的值,体现了实例变量的独立性。
  • 静态变量部分staticVariable 是静态变量,通过类名 VariableDifference 可以直接访问和修改它的值。当通过 obj1 修改静态变量的值后,obj2 访问该静态变量时也会得到修改后的值,说明所有实例共享同一个静态变量。
 
 

 

 

使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top