一.含义:
用{}封装起来的一段代码,对整片代码进行分块划分,根据位置用法分为:
普通代码块,构造代码块,静态代码块,同步代码块。
二.分类
A.普通代码块:
位于方法(函数)中,方法(函数)的主体。
B.构造代码块:
位于类中,方法之外。可定义多个。
{
构造代码块
}
C.静态代码块:
位于类中,方法之外,使用static修饰。可定义多个。
static {
静态代码块
}
D.同步代码块:
多线程保护机制,同一时间只能有一个线程进入该方法块。
synchronized(对象){
同步代码块
}
三.执行:
A.普通代码块:
调用方法时执行。
B.构造代码块:
JVM加载类后且在所调用的构造函数执行之前执行,每new一次执行一次。
C.静态代码块:
最先执行,只执行一次。
四.执行顺序:
A.普通代码块: 按照方法中书写顺序执行
public class Fire{
public static void main(String[] args) {
System.out.println(“普通代码块1”);
System.out.println(“普通代码块2”);
System.out.println(“普通代码块3”);
}
}
运行结果:
普通代码块1
普通代码块2
普通代码块3
B.构造代码块:new一次执行一次,执行先于所调用的构造函数
public class Fire {
{
System.out.println("第一个构造代码块");
}
public Fire()
{
System.out.println("调用方法中的代码块1");
System.out.println("调用方法中的代码块2");
}
public static void main(String[] args) {
System.out.println("普通代码块1");
new Fire();
System.out.println("普通代码块2");
new Fire();
System.out.println("普通代码块3");
}
{
System.out.println("第二个构造代码块");
}
}
运行结果:
普通代码块1
第一个构造代码块
第二个构造代码块
调用方法中的代码块1
调用方法中的代码块2
普通代码块2
第一个构造代码块
第二个构造代码块
调用方法中的代码块1
调用方法中的代码块2
普通代码块3
C.静态代码块:优于其他代码块执行
public class Fire {
static {
System.out.println("静态代码块1");
}
{
System.out.println("第一个构造代码块");
}
static {
System.out.println("静态代码块2");
}
public Fire()
{
System.out.println("调用方法中的代码块1");
System.out.println("调用方法中的代码块2");
}
public static void main(String[] args) {
System.out.println("普通代码块1");
new Fire();
System.out.println("普通代码块2");
new Fire();
System.out.println("普通代码块3");
}
{
System.out.println("第二个构造代码块");
}
static {
System.out.println("静态代码块3");
}
}
运行结果:
静态代码块1
静态代码块2
静态代码块3
普通代码块1
第一个构造代码块
第二个构造代码块
调用方法中的代码块1
调用方法中的代码块2
普通代码块2
第一个构造代码块
第二个构造代码块
调用方法中的代码块1
调用方法中的代码块2
普通代码块3
9633



被折叠的 条评论
为什么被折叠?



