java 类初始化的问题

2025-02-06 12:59:53
推荐回答(4个)
回答1:

当执行到x1的时候应该先加载类A这是对的
但是你有一句
private static A obj =new A();
那么它去执行A的构造函数了
但此时num1 num2其实已经在内存中有了 值为 0 0 (初始化默认值都是0)
所以new A() 结束后 num1 num2 为 1 1
然后接着往下加载类的初始化
num1被赋值过了 而又因为没有指定默认值 所以就为原来的1
而num2这次是指定默认值 所以赋值为指定默认值 10
其实你要是不确定的话
可以加几个静态代码块进去测试一下

回答2:

你把
private static A obj =new A();
放在
public static int num1;
public static int num2 = 10;

之后在试试

回答3:

先建立一个静态空间

回答4:

debug跟踪一下执行的顺序,或许你就明白些了!