300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 静态代码块 非静态代码块 构造函数三者执行顺序

静态代码块 非静态代码块 构造函数三者执行顺序

时间:2024-03-08 23:51:37

相关推荐

静态代码块 非静态代码块 构造函数三者执行顺序

主要探讨一下关于静态代码块,非静态代码块,构造函数的执行顺序。

如有错误,欢迎指出。

首先:

静态成员变量和静态代码块的优先级是一样的,先定义的先执行。

在创建一个对象的时候会执行非静态代码块和构造函数

再者是执行顺序:

/*

*

*(1)父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。

*

*(2)子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。

*

*(3)父类实例成员和实例初始化块,按在代码中出现的顺序依次执行。

*

*(4)执行父类构造方法。

*

*(5)子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。

*

*(6)执行子类构造方法。

*

*/

public class StaticTest {public static StaticTest t1=new StaticTest(); //静态成员变量,第一步执行public static void main(String args[]) {StaticTest t2=new StaticTest(); //第三步执行}//静态代码块static{System.out.println("B");//第二步执行}//非静态代码块{System.out.println("A"); }}

输出:

A

B

A

再来看看这个代码,代码位置调换一下顺序

public class StaticTest {public static void main(String args[]) {StaticTest t2=new StaticTest(); //第三步执行}//静态代码块static{System.out.println("B");//变成第一步执行}public static StaticTest t1=new StaticTest(); //静态成员变量,变成第二步执行//非静态代码块{System.out.println("A"); }}

输出:

B

A

A

所以验证:

1.静态成员变量和静态代码块的优先级是一样的,先定义的先执行。

2.在创建一个对象的时候会执行非静态代码块和构造函数。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。