静态代码块

一,在非主类的静态代码块

class Person{
    {
        //定义在类中,不加任何修饰,构造块
        System.out.println("1,Person类的构造块");
    }
    public Person(){
        System.out.println("2,Person类的构造方法");
    }
    static{
        System.out.println("3,Person类中的静态块");
    }
}

public class Test{
    public static void main(String[] args){
        System.out.println("--start--");
        new Person();
        new Person();
        System.out.println("--end---");
    }
}

静态代码块_第1张图片

二,在主类中的代码块

public class Test{
    {
        System.out.println("1,Test构造块");
    }
    public Test(){
        System.out.println("2,Test的构造方法");
    }
    static{
        System.out.println("3,Test的静态块");
    }

    public static void main(String[] aegs){
        System.out.println("--start--");
        new Test();
        new Test();
        System.out.println("--end--");
    }    
}

静态代码块_第2张图片

通过对比可以看出,在主类中定义的代码块,优先于主方法(main),在非主类中的静态块,按照主类输出顺序执行.

在主类中静态块>main>构造块>构造方法(执行顺序);

在非主类中静态块>构造块>构造方法(执行顺序).

你可能感兴趣的:(JAVA)