在java中,有四种代码块供我们使用:
- 普通代码块
这是使用一对花括号扩起来的代码段.不过,出现在方法中为普通代码块,通常用来,划分变量作用范围。 如:
void exec() {
{
int a = 0 ;
}
{
int a = 2 ;
}
}
- 静态代码块
使用static
关键字和一对花括号标识的一段代码,如:
static {
System.out.println("static exec.");
}
- 构造代码块
就是直接出现在类中的普通代码块.一般用来实例化对象自动执行之需要,普通代码块则是被动调用所在方法的时候执行.
{
//
// c3 = new C3() ;
System.out.println("constructor init.");
}
- 同步代码块
使用synchronized
关键字和一对花括号标识的一段代码,不过同步代码块和普通代码块一样也只能出现方法中,如:
void exec() {
synchronized(this) {
//
System.out.println("synchronized .");
}
}
以上四种代码块,执行顺序描述如下:
- 普通代码块,是被动执行的,调用其所在方法则执行。其执行次数和其方法执行一致.
- 静态代码块,是在所在类加载的时候自动执行的。并且第一次加载所在类到该类第二次被加载之间只会执行一次,因为类加载是互斥的,一个类不能同时被加载多次。
- 构造代码块,只会在该类对象实例化的时候被执行。且会多次执行。
- 同步代码块,多用于多线程共享资源处理上。调用时间和次数和普通代码快类似。