为了账号安全,请及时绑定邮箱和手机立即绑定

结果为什么是这个?

结果为什么是这个?

啊啊啊啊123 2016-06-05 21:31:04
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父类方法而已)


查看完整回答
2 反对 回复 2016-06-06
  • 1 回答
  • 0 关注
  • 1621 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信