静态字段的共享特性

89页Exercise 8

Write a program that demonstrate that, no matter how many objects you create of a particular class, there is only one instance of a particular static field in that class.

public class Counter {
    // Static field - only one instance exists regardless of object count
    public static int staticCount = 0;
    
    // Instance field - new copy per object
    public int instanceCount = 0;

    public Counter() {
        staticCount++;   // Increment static counter
        instanceCount++; // Increment instance counter
    }
}

public class Application {
    public static void main(String[] args) {
        // Create three objects
        Counter c1 = new Counter();
        Counter c2 = new Counter();
        Counter c3 = new Counter();

        // All objects show the same staticCount value
        System.out.println("Static counts:");
        System.out.println(c1.staticCount); // 3
        System.out.println(c2.staticCount); // 3
        System.out.println(c3.staticCount); // 3

        // Instance counts remain separate
        System.out.println("\nInstance counts:");
        System.out.println(c1.instanceCount); // 1
        System.out.println(c2.instanceCount); // 1
        System.out.println(c3.instanceCount); // 1
    }
}

关键点解释:

  1. staticCount 是静态字段,所有 Counter 实例共享同一个副本
  2. 每次创建新对象时,静态计数器会持续递增(最终为3)
  3. 实例字段 instanceCount 每个对象都有独立副本(始终为1)
  4. 通过类名直接访问更规范:Counter.staticCount

运行结果会清晰展示静态字段的共享特性,而实例字段各自独立。

posted @ 2025-04-24 08:37  尼兰  阅读(10)  评论(0)    收藏  举报