欢迎光临散文网 会员登陆 & 注册

人工智能AI面试题-1.3 Java类初始化顺序

2023-10-13 14:17 作者:机器爱上学习  | 我要投稿

1.3 Java类初始化顺序 让我们以🎉🕺的方式揭示Java类的初始化顺序吧!先说结论:基类的静态代码块和静态成员字段,它们是🚀一起起飞的,谁在代码中出现得早,谁先执行。而且,只在第一次加载时执行哦!接下来是派生类的静态代码块和静态成员字段,同样也是🚀一组组合,谁在代码中先现身,谁先出场,也只有第一次加载时亮相。 接下来,我们有基类的普通代码块和普通成员字段,同样是一起来🚗驰骋,按照代码中的排队顺序执行。然后是基类的构造函数,它是整个初始化队伍的🌟明星,最后上场。然后,派生类的普通代码块和普通成员字段也是🚗一起加入比赛,按照代码中的排队顺序执行,最后是派生类的构造函数,它们是这场初始化盛宴的🍰甜点。 接下来,我们用代码👨‍💻来验证一下这个顺序: ```java class Log {   public static String initLog(String log) {     System.out.println(log);     return null;   } } class Base {   static {     System.out.println("Base Static Block 1");   }   private static String staticValue = Log.initLog("Base Static Fields");   static {     System.out.println("Base Static Block 2");   }   {     System.out.println("Base Normal Block 1");   }   private String value = Log.initLog("Base Normal Field");   {     System.out.println("Base Normal Block 2");   }   Base() {     System.out.println("Base Constructor");   } } public class Derived extends Base {   static {     System.out.println("Static Block 1");   }   private static String staticValue = Log.initLog("Static Fields");   static {     System.out.println("Static Block 2");   }   {     System.out.println("Normal Block 1");   }   private String value = Log.initLog("Normal Field");   {     System.out.println("Normal Block 2");   }   Derived() {     System.out.println("Derived Constructor");   } } public static void main(String[] args) {   Derived derived = new Derived(); } ``` 控制台结果输出如下,彩排完毕📢: ``` Base Static Block 1 Base Static Fields Base Static Block 2 Static Block 1 Static Fields Static Block 2 Base Normal Block 1 Base Normal Field Base Normal Block 2 Base Constructor Normal Block 1 Normal Field Normal Block 2 Derived Constructor ```

人工智能AI面试题-1.3 Java类初始化顺序的评论 (共 条)

分享到微博请遵守国家法律