Java 程序分析:静态变量和实例变量的交互

以下代码演示了 Java 中静态变量和实例变量的交互。

public class Test3 {
    static int x = 1;
    int y = 0;

    Test3() {
        x++;
        y++;
    }

    public static void main(String[] args) {
        Test3 st = new Test3();
        System.out.println('x=' + x);
        System.out.println('st.y=' + st.y);
        st = new Test3();
        System.out.println('x=' + x);
        System.out.println('st.y=' + st.y);
    }
}

输出结果:

x=2
st.y=1
x=3
st.y=1

代码分析:

  • 静态变量 x: 在类中定义,只有一个副本,所有对象共享同一个 x。
  • 实例变量 y: 在每个对象中都有一个独立的副本,每个对象拥有自己的 y 值。

代码执行步骤:

  1. 创建第一个对象 st:

    • x 被初始化为 1,因为它是静态变量。
    • st.y 被初始化为 0,因为它是一个实例变量。
    • Test3() 构造函数中,x 被递增到 2st.y 被递增到 1
    • 第一次输出:x=2st.y=1
  2. 创建第二个对象 st:

    • 创建一个新的 Test3 对象,覆盖了之前的 st 对象。
    • x 仍然是 2,因为它是静态变量。
    • st.y 被初始化为 0,因为它是一个新的对象。
    • Test3() 构造函数中,x 被递增到 3st.y 被递增到 1
    • 第二次输出:x=3st.y=1

结论:

该程序演示了静态变量和实例变量的不同行为。静态变量在类级别共享,而实例变量在每个对象中都有一个独立的值。在创建多个对象时,静态变量的值会持续更新,而实例变量的值会重置为初始值。

Java 程序分析:静态变量和实例变量的交互

原文地址: https://www.cveoy.top/t/topic/f17q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录