java静态块,普通块,构造函数的执行顺序
2017-09-27 11:11
274 查看
10
以下代码执行后输出结果为( )
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
以下代码执行后输出结果为( )
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基础-静态块、非静态块、构造函数的执行顺序
- Java的块,静态块,构造函数,继承的执行先后顺序
- Java基础 静态块、非静态块、构造函数的执行顺序
- Java 静态块 、构造块、构造函数执行顺序
- java的静态属性,静态块,构造函数的执行顺序
- Java 父类与子类初始化块,静态块,构造函数执行顺序
- Java对象的构造过程---子类继承父类时(非)静态块及构造函数等的执行顺序
- Java基础 静态块、非静态块、构造函数的执行顺序
- JAVA 构造函数,静态块,非静态块执行顺序
- java 静态块、非静态块、静态函数、构造函数 执行顺序
- Java中静态块 代码块 构造函数的执行顺序
- [备忘]java 静态块、非静态块、静态函数、构造函数 执行顺序
- Java中静态域、静态块、非静态域、非静态块、构造函数的执行顺序
- java 静态块、非静态块、静态函数、构造函数 执行顺序
- 转来的:java中静态块和构造函数的执行顺序问题
- Java的块,静态块,构造函数,继承的执行先后顺序
- Java中静态块,静态成员变量,构造块,普通成员变量,构造方法的执行顺序
- java 静态块、非静态块、静态函数、构造函数 执行顺序
- java的初始化块、静态初始化块、构造函数的执行顺序
- java静态块的执行顺序