(三十一)静态代码块和构造代码块

/**
静态代码块:随着类的加载而执行,只执行一次,优先与main函数的执行
*/
class Demo12
{
    static
    {
        System.out.println("a");
    }
    public static void main(String[] args) {
        //new Test();
        //Test.show();
        Test t = null;
    }
    static
    {
        System.out.println("b");    
    }
}
class Test
{
    static int num = 10;
    static
    {
        System.out.println(num);
    }
    public static void show()
    {
        System.out.println("show");
    }
}
 
 
//执行结果为a,b,c,show
 
构造代码块
/**
构造代码块:对象一创建就执行 ,优先于构造函数的执行;
实现所有对象的初始化
*/
class Demo13
{
    public static void main(String[] args) {
        People person1 = new People(23,"lisi");
        People person2 = new People(20,"wangwu");
        System.out.println(person1.age + " " + person1.name);//3
        System.out.println(person2.age + " " + person2.name);//4c
    }
}
class People
{
    int age;
    String name;
    {
        System.out.println("构造代码块");//1 可以实现所有对象的一个初始化,当所有对象都有这个共性时使用
    }
    People(int age,String name) {
        this.age = age;
        this.name = name;
        System.out.println("构造函数执行");    //2
    }
 
}

  

原文地址:https://www.cnblogs.com/bgwhite/p/9377766.html