代码块的定义与使用
根据代码块出现的位置以及关键字,分为以下四种代码块:
1.普通代码块
定义在方法中的代码块,不能被任何修饰符修饰。
2.构造块
定义在类中的代码块(不加任何修饰符)
在对象产生时,优先于构造方法执行。有几个对象产生,就调用几次构造块。
用于在构造方法执行前完成一些属性的初始化操作。
3.静态代码块
定义在类中,用static修饰的代码块,初始化类中静态域的值。
(1)主类中的静态代码块
优先于主方法执行
public class Work{
static class Test{
public Test{
System.out.println("1.主类中的构造方法");
}
{
System.out.println("2.主类中的构造块");
}
(
static{
System.out.println("3.主类的内部类中的静态代码块");
}
}
static{
System.out.println("7.主类中的静态块");
}
public static void main(String[] args){
System.out.println("5. start ......");
new Test();
new Test();
System.out.println("6. end ......");
}
}
输出结果为:
7.主类中的静态块
5. start ......
3.主类的内部类中的静态代码块
2.主类中的构造块
1.主类中的构造方法
2.主类中的构造块
1.主类中的构造方法
6. end ......
(2)非主类中的静态代码块
在类加载时执行(什么时候用到该类),优先于构造块执行,无论有多少对象产生,只会调用一次。
class Test{
public Test(){
System.out.println("1. Test 类的构造方法");
}
{
System.out.println("2. Test 类的构造块");
}
static{
System.out.println("3. Test 类中的静态代码块");
}
}
public class Work{
public static void main(String[] args){
new Test();
}
}
输出的结果为:
3.Test 类中的静态代码块
1. Test 类的构造块
2. Test 类的构造方法
4.同步代码块
synchronized关键字修饰的代码块,保证该代码块内只有一个线程在。