代码块:在类或方法中直接使用 “{ }”括起来的一段代码,表示一块代码区域。
代码块里变量属于局部变量,只在自己所在区域{ }内有效。
代码块依据位置不同分为三种形式:
- 局部代码块:直接定义在方法内部的代码块。一般不直接使用,常结合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无法输出 }}
局部代码块程序示例运行结果:
121
- 初始化代码块(构造代码块):直接定义在类中。每次创建对象都会执行初始化代码块,每次创建对象都会调用构造器。在调用构造器之前,会先执行本类中的初始化代码块。(通过反编译后,会发现初始化代码块也作为构造器的最初语句。)
初始化代码块程序示例:
-
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:$$$$$$$$$$初始化代码块##########构造器!!!!!!!!!~~~~~~~~~~~初始化代码块##########构造器!!!!!!!!!