猿问

结果为什么是这个?

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();

}

}


啊啊啊啊123
浏览 1622回答 1
1回答

绿洲仙人球

这是一个Java中代码执行顺序的问题,就目前这个类而言,先执行静态块(333),在执行普通块(222),最后执行构造函数(111),所以结果就是3/2/1。具体解释如下:1、方法、块对应静态和普通两个级别,如果不产生实例,就只执行静态部分,所有关联类中的静态部分总先于非静态部分执行。2、静态部分中再分:静态块先于静态方法。非静态部分中构造函数再分:父类先于子类。(非静态部分中的方法,构造函数也没什么特别,构造函数和普通函数的却别就是super父类方法而已)
随时随地看视频慕课网APP

相关分类

Java
我要回答