您的位置:首页 > 编程语言 > Java开发

java静态块,普通块,构造函数的执行顺序

2017-09-27 11:11 274 查看
10
以下代码执行后输出结果为( )

blockAblockBblockA


blockAblockAblockB


blockBblockBblockA


blockBblockAblockB


1.首先,需要明白类的加载顺序。

(1) 父类静态对象和静态代码块

(2) 子类静态对象和静态代码块

(3) 父类非静态对象和非静态代码块

(4) 父类构造函数

(5) 子类 非静态对象和非静态代码块

(6) 子类构造函数

其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)

2.因而,整体的执行顺序为

public static Test t1 = new Test(); //(1)

static

{

System.out.println(“blockB”); //(2)

}

Test t2 =new Test(); //(3)

在执行(1)时创建了一个Test对象,在这个过程中会执行非静态代码块和缺省的无参构造函数,在执行非静态代码块时就输出了blockA;然后执行(2)输出blockB;执行(3)的过程同样会执行非静态代码块和缺省的无参构造函数,在执行非静态代码块时输出blockA。因此,最终的结果为

blockA

blockB

blockA
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java