• 类中静态代码块、实例代码块、构造方法执行次序


        在类加载的时候,静态代码中的语句会执行,在整个类加载的过程中只执行一次,和创建多少个对象没有关系

        实例代码块中的语句,经过编译后,会添加到构造方法第一条语句之前

        构造方法:每次创建对象时候都会执行

    举个简单的例子

    1. public class Person {
    2. public String name;
    3. public String gender;
    4. public int age;
    5. public Person(String name,String gender,int age){
    6. this.name =name;
    7. this.gender = gender;
    8. this.age = age;
    9. System.out.println("基类的构造方法");
    10. }
    11. {
    12. System.out.println("基类的实例代码块");
    13. }
    14. static {
    15. System.out.println("基类中的静态代码块");
    16. }
    17. }
    1. public class Student extends Person{
    2. public int id;
    3. public Student(String name,String gender,int age,int id){
    4. super(name,gender,age);
    5. this.id = id;
    6. System.out.println("子类的构造方法");
    7. }
    8. {
    9. System.out.println("子类的实例代码块");
    10. }
    11. static {
    12. System.out.println("子类的静态代码块");
    13. }
    14. public static void main(String[] args) {
    15. Student s1 = new Student("张三","男",24,11111);
    16. System.out.println("=================================");
    17. Student s2 = new Student("李四","男",35,11668);
    18. }
    19. }

    执行结果为:

    通过分析执行结果,得出以下结论:

    1、父类静态代码块优先于子类静态代码块执行,而且是最早执行

    2、父类实例方法和父类构造方法紧接着执行

    3、子类的实例代码块和子类的构造方法紧接着再执行

    4、第二次实例化对象时,父类和子类的静态代码块都将不会再执行

    5、静态代码块先执行,并且只执行一次,在类加载阶段执行

    6、如果类没有加载,先加载类:先加载基类,后加载子类,基类的静态代码块先执行,子类的代码块后执行,并且都只执行一次

    7、当有对象创建的时候,才会执行实例代码块,实例代码块执行完成后,最后构造方法执行

      注意:

       1、new哪个类的对象,编译器就会调用该类的构造方法

       2、new子类对象:编译器会调用子类的构造方法

            a、从基类继承下来的成员变量,通过super()调用基类构造方法

            b、子类新增加的成员

       3、基类构造方法中的内容先打印,然后子类构造方法中的内容后打印

       但是:不能通过打印结果说明 先调用基类的构造方法,后调用子类的构造方法(说法错误

  • 相关阅读:
    FreeRTOS-任务通知详解
    Dive into TensorFlow - 解析 TF 核心抽象 op 算子
    java list集合运算
    【牛客刷题】——Python入门 05 运算符(上)
    Shiro-550反序列化漏洞(CVE-2016-4437)复现
    MySQL 教程:MySQL IN 语句(高级)
    μC/OS-II---进程间通信方式
    19_ue4进阶末日生存游戏开发[关联UI和数据]
    代码随想录算法训练营第57天 | 647. 回文子串 516.最长回文子序列 dp总结
    机器学习之神经网络的层次
  • 原文地址:https://blog.csdn.net/m0_53677355/article/details/126598933