Java 代码执行顺序

版权声明:欢迎访问ssm个人搭建博客 https://www.yanzhaochang.top 所有版权归静待花开所有 https://blog.csdn.net/qq_42081709/article/details/89598799

 前言:欢迎访问ssm搭建个人博客 ----> 闫兆昌的博客

Java ​(静态)变量、(静态)代码块的执行顺序

    顺序:

        Java中的静态变量和静态代码块是在类加载时就执行的。

        实例化对象时,先声明并实例化变量再执行构造函数。

           如果子类继承父类,则先执行父类的静态变量和静态代码块 ,再执行子类的静态变量和静态代码块。

                                同样,接着执行父类非静态代码块和构造函数 ,再执行子类的非静态代码块和构造函数 。

        注意:

            (静态)变量和(静态)代码块的也是有执行顺序的,与代码书写的顺序一致。

            (静态)代码块中可以使用(静态)变量,但是被使用的(静态)变量必须在(静态)代码块前面声明。

 ​   例:

扫描二维码关注公众号,回复: 6047699 查看本文章

     1 Put类,用于打印变量

    public class Put {
        public Put(String word) {
            System.out.println(word);
        }
    }

    2 Parent 类

    public class Parent {
        static Put put = new Put("Parent's static parameter");
        
        Put put2 = new Put("Parent's parameter");
    
        static {
            System.out.println("Parent's static code block");
        }
    
        {
            System.out.println("Parent's code block");
        }
    
        public Parent() {
            System.out.println("Parent.Parent()");
        }
    }

    3 Child 类

    public class Child extends Parent{
        static Put put = new Put("Child's static parameter");
    
        Put put2 = new Put("Child's parameter");
        
        static {
            System.out.println("Child's static code block");
        }
        
        {
            System.out.println("Child's code block");
        }
        
        public Child() {
            System.out.println("Child.Child()");
        }
    }

    4 Run主类

    public class Run {
        public static void main(String[] args) {
            new Child();
        }
    }

    

   5 打印结果

         Parent's static parameter

         Parent's static code block

         Child's static parameter

         Child's static code block

         Parent's parameter

         Parent's code block

         Parent.Parent()

         Child's parameter

         Child's code block

         Child.Child()

    

    6 执行   

        1、父类静态变量和静态代码块(先声明的先执行);

        2、子类静态变量和静态代码块(先声明的先执行);

        3、父类的变量和代码块(先声明的先执行);

        4、父类的构造函数;

        5、子类的变量和代码块(先声明的先执行);

        6、子类的构造函数。

猜你喜欢

转载自blog.csdn.net/qq_42081709/article/details/89598799
今日推荐