成员变量、静态代码块、非静态代码块、构造器的初始化顺序
首先说结论吧
静态成员变量->父类静态代码块->子类静态成员变量->子类静态代码块->父类成员变量->父类非静态代码快->父类构造器->子类成员变量->子类非静态代码块->子类构造器
具体例子可以看如下示例
public class TestFuZi { public static void main(String[] args) { Zi z=new Zi(); } } class Fu{ private static int i=getNum("(1)i"); private int j=getNum("(2)j"); static { print("(3)父类静态代码块"); } { print("父类非静态代码块,又称为构造代码块"); } Fu(){ print("(5)父类构造代码块"); } public static void print(String str){ System.out.println(str+"->"+i); } public static int getNum(String str){ print(str); return ++i; } } class Zi extends Fu{ private static int k=getNum("(6)k"); private int h=getNum("(7)h"); static { print("(8)子类静态代码块"); } { print("(9)子类非静态代码块,又称为构造代码块"); } Zi(){ print("(10)子类构造器"); } public static int getNum(String str){ print(str); return ++k; } }
该程序的输出结果是:
学习要有计划、代码要经常练习、学习之后要有输出、多交流、多总结、找出规律。
忌三天打鱼两天晒网、浅尝辄止、闭门造车
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!