代码块:在类或方法中直接使用 “{ }”括起来的一段代码,表示一块代码区域。
代码块里变量属于局部变量,只在自己所在区域{ }内有效。
代码块依据位置不同分为三种形式:
- 局部代码块:直接定义在方法内部的代码块。一般不直接使用,常结合if /for语句中使用的局部代码块。
局部代码块程序示例:
public class CodeBlock { public static void main(String[] args) { int a=1; { int b=2; System.out.println(a); System.out.println(b); } System.out.println(a); // System.out.println(b); //此处b无法输出 } }
局部代码块程序示例运行结果:
1 2 1
- 初始化代码块(构造代码块):直接定义在类中。每次创建对象都会执行初始化代码块,每次创建对象都会调用构造器。在调用构造器之前,会先执行本类中的初始化代码块。(通过反编译后,会发现初始化代码块也作为构造器的最初语句。)
初始化代码块程序示例:
-
public class CodeBlock { { System.out.println("初始化代码块##########"); } CodeBlock(){ //构造器 System.out.println("构造器!!!!!!!!!"); } public static void main(String[] args) { new CodeBlock(); System.out.println("~~~~~~~~~~~"); new CodeBlock(); } }
初始化代码块程序示例运行结果:
初始化代码块########## 构造器!!!!!!!!! ~~~~~~~~~~~ 初始化代码块########## 构造器!!!!!!!!!
-
静态代码块(使用static修饰的代码块):在主方法执行之前执行静态代码块,且执行一次。
静态代码块程序示例:
public class CodeBlock {
{
System.out.println("初始化代码块##########");
}
CodeBlock(){ //构造器
System.out.println("构造器!!!!!!!!!");
}
static{ //静态代码块A
System.out.println("静态代码块A:$$$$$$$$$$");
}
public static void main(String[] args) {
new CodeBlock();
System.out.println("~~~~~~~~~~~");
new CodeBlock();
}
static{ //静态代码块B
System.out.println("静态代码块B:$$$$$$$$$$");
}
}
静态代码块程序示例运行结果:
静态代码块A:$$$$$$$$$$
静态代码块B:$$$$$$$$$$
初始化代码块##########
构造器!!!!!!!!!
~~~~~~~~~~~
初始化代码块##########
构造器!!!!!!!!!