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();
}
}
显示: 静态代码块
构造代码块
构造方法