public class A{ int i1; int i2; static int i3; public A(){ i1 = 10; System.out.printf("1111\n"); } { i2 = 20; System.out.printf("2222\n"); }static{ i3 = 30; System.out.printf("3333\n"); } public static void main(String[] args) { A aa = new A(); }}
1 回答
已采纳
绿洲仙人球
TA贡献39条经验 获得超47个赞
这是一个Java中代码执行顺序的问题,就目前这个类而言,先执行静态块(333),在执行普通块(222),最后执行构造函数(111),所以结果就是3/2/1。
具体解释如下:
1、方法、块对应静态和普通两个级别,如果不产生实例,就只执行静态部分,所有关联类中的静态部分总先于非静态部分执行。
2、静态部分中再分:静态块先于静态方法。非静态部分中构造函数再分:父类先于子类。(非静态部分中的方法,构造函数也没什么特别,构造函数和普通函数的却别就是super父类方法而已)
添加回答
举报
0/150
提交
取消