21.2 代码块

/*
* 代码块:即{}
* 局部代码块:存在于方法中,控制变量的生命周期(作用域)
*构造代码块:提取构造方法中的共性,每次创建对象都会去执行,并且执行顺序比构造方法优先
*静态代码块:随着类的加载而加载,只加载一次,加载类时需要做的一些初始化,比如加载驱动(有static的特性:被所有对象共享,静态所修饰的成员加载优先于对象,随着类的加载而加载)
*无参和有参之间没有先后顺序,根据调用顺序执行
* */

package day21_static.代码块;

public class BlockDemo {
    public static void main(String[] args) {
        {
            System.out.println("局部代码块");
        }

        Teacher t = new Teacher("xiao",12);
        Teacher t2 = new Teacher();
    }
}

class Teacher {
    String name;
    int age;

    {
        System.out.println("构造代码块,存在于构造方法中");
    }

    static {
        System.out.println("静态代码块,加 static.");
    }

    public Teacher() {
        System.out.println("无参构造");
    }

    public Teacher(String name,int age) {
        System.out.println("有参");
    }
}

输出如下

main:局部--有参(静态代码块--代码块--有参)--无参(静态代码块只执行一次--代码块--无参)

原文地址:https://www.cnblogs.com/longesang/p/11190260.html