Java中的代码块概述
代码块(code block)是指一对{}括起来的若干条简单的Java语句,确定了变量的作用域。使用代码块(有时称为复合语句或块)可以在Java程序结构中原本只能放置一条简单语句的地方放置多条语句
如if语句: int i=0; int j=9; if(i>0) i++; if(j<10){ j+=i; i++; j--; }
代码块可简单的分为局部代码块、构造代码块、静态代码块。
1)局部代码块
在方法中的代码块。
作用:确定了代码块中变量的生命周期。
public class Block { public static void main(String[] args) { int i=0; int j=0; { //局部代码块 int x=5; int y=6; i=x+y; } // j=x+y; 这条语句不成例,因为x,y的作用域仅在代码块中 System.out.println("i="+i); //System.out.println(x+" "+y); 代码块被执行完后,x,y会被清 } }
显示:i=11
2)构造代码块
在类的成员位置处。作用:可以将多个构造方法中的相同的语句放到构造代码块中,对对象进行初始化。
*在每次执行构造方法之前,先执行构造代码块。
class CodeBlock{ int x; int y; char z; { System.out.println("构造代码块"); } CodeBlock(){ int d=10; // System.out.println("构造代码块"); } CodeBlock(int x){ // System.out.println("构造代码块"); x=10; } } public class BlockDemo { public static void main(String[] args) { CodeBlock c=new CodeBlock(); CodeBlock c2=new CodeBlock(0); } }
显示:构造代码块 构造代码块
3)静态代码块
也在类的成员位置,被static关键字修饰。作用:一般情况给类进行初始化。
*静态代码块只能被执行一次。
class CodeStatic{ int x; int y; char z; static {//静态代码块并且只执行一次 System.out.println("静态代码块"); } CodeStatic(){//无参构造 } } class Atest{ public static void main(String[] args) { CodeStatic r=new CodeStatic(); CodeStatic r2=new CodeStatic(); } }
显示:静态代码块 这是无参构造方法 这是无参构造方法注意:在代码块中是可以嵌套代码块的。代码块括起来的都是语句,不能定义方法。
面试题:
构造代码块,构造方法,静态代码的优先级?
答: 静态代码块-->构造代码块-->构造方法
代码演示:
class CodeStatic{ {//构造代码块 System.out.println("构造代码块"); } static {//静态代码块 System.out.println("静态代码块"); } CodeStatic(){//无参构造 System.out.println("构造方法"); } } public class BlockDemo2{ public static void main(String[] args) { CodeStatic r=new CodeStatic(); } }
显示: 静态代码块 构造代码块 构造方法