赤峰建设淘宝网站,专门做医疗器械的网站,家庭装修设计软件免费,手机网站建站 服务器github:https://github.com/nocoders/java-everything.git 名词解释
静态代码块#xff1a;java中使用static关键字修饰的代码块#xff0c;每个代码块只会执行一次#xff0c;JVM加载类时会执行静态代码块中的代码#xff0c;静态代码块先于主方法执行。构造代码块#…github:https://github.com/nocoders/java-everything.git 名词解释
静态代码块java中使用static关键字修饰的代码块每个代码块只会执行一次JVM加载类时会执行静态代码块中的代码静态代码块先于主方法执行。构造代码块直接在类中定义的代码块没有加static关键字在创建实例对象时先于构造方法执行。构造方法创建实例对象的方法
代码示例
/*** 测试 父类、子类 静态代码块、构造代码块、构造方法执行顺序** author linmeng* date 2023/3/1 14:42*/
public class DemoTest {public static void main(String[] args) {new Son();System.out.println(再次执行);new Son();}}class Parent {{System.out.println(父类构造代码块);}static {System.out.println(父类静态代码块);}public Parent() {System.out.println(父类构造方法);}}class Son extends Parent {{System.out.println(子类构造代码块);}static {System.out.println(子类静态代码块);}public Son() {System.out.println(子类构造方法);}}
执行结果 总结如下
由于静态代码块是在方法区中进行加载的所以静态代码块的加载优先级大于对象的创建。所以父类和子类的静态代码块一定是先加载出来的。
其次由于Java有一个分层话初始化机制所以Java会先加载父类对象其次再加载子类对象。
构造代码块的代码执行优先级也是大于构造方法的。所以最终的执行次序为
父类静态代码块 - 子类静态代码块 - 父类构造代码块 - 父类构造方法 - 子类构造代码块 - 子类构造方法
参考链接
Java中静态代码块、构造方法、代码块、父类与子类之间执行顺序及父类子类实例化对象Java中子类继承父类父子类静态代码块、构造代码块以及构造方法的执行次序父类、子类的静态代码块、构造代码块、静态变量、构造方法执行顺序加深理解