关于java代码中静态代码块、非静态构造代码块以及构造方法的执行顺序
来源:互联网 发布:超时空拦截知乎 编辑:程序博客网 时间:2024/05/16 06:27
在这之前。我一直认为非静态构造代码块一直是先于构造方法执行的,但是在我最近的测试用例中却不是这样的
public class Test1 {
public static int a = 0;
static {
a = 10;
System.out.println("静态代码块在执行a=" + a);
}
{
a = 8;
System.out.println("非静态代码块在执行a=" + a);
}
public Test1() {
this("带参构造方法在执行a="+a);
System.out.println("无参构造方法在执行a=" + a);
}
public Test1(String n) {
System.out.println(n);
}
public static void main(String[] args) {
Test1 t = null;
System.out.println("!!!!!!!!!!!!!!!!!!!!!");
t = new Test1();
}
}
这是我用来测试的代码,你们觉得执行顺序应该是怎样的呢?
我觉得大多数小伙伴都跟我想的差不多,但是实际的运行结果确是让我感到很疑惑
运行结果:
开始我确实很疑惑,为什么带参构造方法执行a=8,而不是10,然后我开始了漫长的找资料之路
http://blog.csdn.net/kingzone_2008/article/details/45015301
这位大神总结的很精辟,也确实让我长了不少见识,结论其实只有一个:
非静态构造代码块的执行取决于构造方法中有无this关键字,有this关键字,先执行构造方法,无this关键字,先执行构造代码块
- 关于java代码中静态代码块、非静态构造代码块以及构造方法的执行顺序
- Java中静态代码块、非静态代码块、构造方法三者的执行顺序
- Java中关于静态代码块,非静态代码块,构造方法,静态方法,一般方法执行顺序
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 关于类中静态块,静态方法,构造代码块,构造方法的执行顺序
- 举例说明java中静态代码块、非静态代码块、构造函数的执行顺序
- Java中静态代码块、非静态代码块和构造函数的执行顺序
- Java中静态代码块、非静态代码块、构造函数的执行顺序与作用
- java中静态代码块,非静态代码块,构造函数之间的执行顺序
- JAVA继承关系中静态代码块、非静态代码块,构造函数的执行顺序
- Java中静态代码块、非静态代码块以及构造函数的初始化顺序
- java中静态代码块,构造代码块,构造方法,main方法的执行顺序
- java 静态代码块,构造代码块,构造方法,普通代码块的执行顺序
- Java初学者Paulmarkyes---中静态代码块,普通代码块,构造代码块,构造方法先后执行顺序以及区别
- java关于代码块 , 动态代码块 , 静态代码块 , 静态方法 , 构造函数的执行顺序
- 静态代码块、代码块、构造方法的执行顺序
- java 静态代码块、静态变量、成员变量、构造代码块、构造方法的执行顺序
- 父类子类构造方法、静态代码块、非静态代码块的执行顺序
- centos7下安装mysql(yum)
- 动态代理模式
- 获取当前时间:格式如’2017-09-08 8:30:00’
- 《并发编程》--3.中断线程
- 论文阅读理解
- 关于java代码中静态代码块、非静态构造代码块以及构造方法的执行顺序
- 最小生成树
- redis you may fix
- easyui-dialog中无法显示KindEditor插件
- rn 启动项目失败:A problem occurred configuring project ':app'. (二)
- C#类和结构(1)
- Django具体导出excel、json、zip文件
- Java并发编程实战(二)基础构建模块
- Poj 2559 最大矩形面积