Java 程序分析:静态变量和实例变量的交互
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 值。
代码执行步骤:
-
创建第一个对象 st:
x被初始化为1,因为它是静态变量。st.y被初始化为0,因为它是一个实例变量。- 在
Test3()构造函数中,x被递增到2,st.y被递增到1。 - 第一次输出:
x=2和st.y=1。
-
创建第二个对象 st:
- 创建一个新的
Test3对象,覆盖了之前的st对象。 x仍然是2,因为它是静态变量。st.y被初始化为0,因为它是一个新的对象。- 在
Test3()构造函数中,x被递增到3,st.y被递增到1。 - 第二次输出:
x=3和st.y=1。
- 创建一个新的
结论:
该程序演示了静态变量和实例变量的不同行为。静态变量在类级别共享,而实例变量在每个对象中都有一个独立的值。在创建多个对象时,静态变量的值会持续更新,而实例变量的值会重置为初始值。
原文地址: https://www.cveoy.top/t/topic/f17q 著作权归作者所有。请勿转载和采集!