Java代码执行顺序-(花1分钟看一下吧)

1.执行的六大原则

1)父类:静态成员赋值,静态代码块
2)子类:静态成员赋值,静态代码块
3)父类:实例成员赋值,实例代码块
4)父类:构造器中的其他方法
5)子类:实例成员赋值,实例代码块
6)子类:构造器中的其他方法

2.下面程序会输出什么?

package com.cxx.thread;
public class Happy{
    static{
        System.out.println("Happy");
    }
    public static void main(String[] args){
        System.out.println("(1)");
        new D();
    }
}
class E{
    E(){
        System.out.println("(2)");
    }
    public void funcOfE(){
        System.out.println("(3)");
    }
}
class F{
    F(){
        System.out.println("(4)");
    }
    public void funcOfF(){
        System.out.println("(5)");
    }
}
class B{
    E e=new E();
    static F f=new F();
    public String sb=getSb();
    static{
        System.out.println("(6)");
        f.funcOfF();
    }
    {
        System.out.println("(7)");
    }
    B(){
        System.out.println("(8)");
        e.funcOfE();
    }
    public String getSb(){
        System.out.println("(9)");
        return "sb";
    }
}
class C extends B{
    static{
        System.out.println("(10)");
    }
    {
        System.out.println("(11)");
    }

    C(){
        System.out.println("(12)");
    }
}
class D extends C{
    public String sd1=getSd1();
    public static String sd=getSd();
    static{
        System.out.println("(13)");
    }
    {
        System.out.println("(14)");
    }
    D(){
        System.out.println("(15)"+sb+" "+sd+" "+sd1);
    }
    static public String getSd(){
        System.out.println("(16)");
        return "sd";
    }
    public String getSd1(){
        System.out.println("(17)");
        return "sd1";
    }
}

3.运行结果

Happy
(1)
(4)
(6)
(5)
(10)
(16)
(13)
(2)
(9)
(7)
(8)
(3)
(11)
(12)
(17)
(14)
(15)sb sd sd1

4.总结

总之,抓住前面的6个代码执行顺序原则,加油哦!

猜你喜欢

转载自blog.csdn.net/m0_37499059/article/details/80494281