静态构造代码块、构造代码块、构造方法的顺序问题。

qq_42477114 2019-07-22 04:42:27
package aaa_duotai;

public class Demo {
static Demo d1 = new Demo();
static Demo d2 = new Demo();
{
System.out.println("构造代码块");
}
static {
System.out.println("静态构造代码块");
}
public Demo() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Demo d1 = new Demo();

}
}
...全文
283 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2019-07-25
  • 打赏
  • 举报
回复
引用 5 楼 areslllll 的回复:
运行结果是 构造代码块--构造方法--构造代码块--构造方法--静态构造代码块--构造代码块--构造方法。
都说了因为静态变量或静态构造只会执行一次。 本来的顺序 静态变量--》静态代码块--》代码块--》构造方法 但是在初始化静态变量时,静态变量是再次初始化,此时静态代码块在主程序的初始化中已经预定要执行的,这时候再静态初始化,静态代码块因为只能执行一次所以不会再次执行直接被跳过,执行代码块--》构造方法,非静态方法可以反复被执行。 相当于在初始化途中被插入了其他的操作,而不是初始化本身的顺序问题。
qq_42477114 2019-07-25
  • 打赏
  • 举报
回复
运行结果是 构造代码块--构造方法--构造代码块--构造方法--静态构造代码块--构造代码块--构造方法。
黄邱小鸟 2019-07-25
  • 打赏
  • 举报
回复
静态代码块 》 构造代码块 》 构造方法
不怕孤单的123 2019-07-22
  • 打赏
  • 举报
回复
静态变量 -> 静态代码块 -> 构造代码块 -> 构造方法
qq_39936465 2019-07-22
  • 打赏
  • 举报
回复
构造方法最后才会执行。
qq_39936465 2019-07-22
  • 打赏
  • 举报
回复
因为你反复实例化同一个类,静态代码块只会实行一次,所以静态初始化中不会再执行静态代码块,我觉得研究这个没有什么意义,没人会在初始化中在加入静态初始化自己。
usecf 2019-07-22
  • 打赏
  • 举报
回复
静态构造代码块----构造代码块--构造方法 静态方法是全局的,首先执行 构造代码块和构造方法看谁在前面,谁就先执行

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧