java中静态成员变量、静态代码块static执行时机
1、java中静态成员变量与静态块会比构造函数先执行,并且只会执行一次
2、一个类中有多个static修饰的成员变量或者代码块,会按照代码中先后的顺序执行
请看下面的示例:
public class Test { public static void main(String[] args) { Out out1 = new Out(); } }
public class Out { static int num = 0; String name = "aaa"; static String name2 = "bbb"; static Out out2 = new Out(); Out() { System.out.println("执行构造函数"); } { System.out.println("执行普通代码块,name值:"+name); } static { num +=1; System.out.println("执行静态代码块,name2值:"+name2+",num值:"+num); } }
执行程序,输出如下:
程序执行顺序为:
1)main方法构造out1时先加载Out类中带static的语句,按代码中先后顺序加载
2)加载到第3个static语句时开始构造out2,再次加载Out类,由于out2是static对象,所以不在执行out2中static语句
3)构造out2时执行普通代码块和构造函数(普通代码块优先于构造函数)
4)继续执行构造out1的语句,执行最后一个static语句(前3个已经执行了)
5)构造out1时,static执行完再执行普通代码块和构造函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】