目录
一、代码块的概念和分类
概念:使用{}定义的一段代码称为代码块。
分类:根据代码块定义的位置以及关键字,可分为以下四种:
(1)普通代码块
(2)构造块
(3)静态块
(4)同步代码块
二、普通代码块
概念:普通代码块就是定义在方法中的代码块,也叫本地代码块。
这种用法一般比较少见。
三、构造块
概念:定义在类中的代码块(不加修饰符),又称为实例代码块。
作用:一般用于初始化实例成员变量。
实例代码块内部也可以初始化静态成员变量,但一般不这么做。
四、静态块
概念:使用static定义的代码块称为静态块,也叫静态代码块。
作用:一般用于初始化静态成员变量。
静态代码块内部也可以初始化实例成员变量,但一般不这么做。
五、注意事项
class Student{
public String name;
public int age;
public static String school;
public Student(String name, int age) {
this.name = name;
this.age = age;
System.out.println("两个参数的构造方法");
}
static {
System.out.println("第一个静态代码块");
}
{
this.age = 18;
this.name = "张三";
//this.school = "家里蹲大学";
System.out.println("实例代码块");
}
static {
Student.school = "家里蹲大学";
System.out.println("第二个静态代码块");
//Student student = new Student();
//student.name = "李四";//一般不这么做
}
}
(1)静态代码块不管生成多少个对象,它也只会执行一次。
当我们实例化3个对象时,可以发现,静态代码块仅执行了一次,并且可以得出下面一条结论:
(2)代码的执行顺序为:静态代码块→实例代码块→构造方法,并且和代码块的定义顺序无关。
如果有多个实例代码块,则根据它们的定义顺序来先后执行;如果有多个静态代码块,在编译代码时,编译器会按照定义的顺序依次合并。
(3)实例代码块只有在创建对象时才会执行。
同步代码块暂时还没学到哈~