Java中4种代码块

Java的4种代码块

一、普通代码块

  直接在一个方法中出现的{}就称为普通代码块,也叫局部代码块,出现在局部位置,作用主要是限定变量的生命周期。例子程序如下:

public class CodeDemo01{

  public static void main(String[] args){

  //普通代码块

    {

      int x = 10;

       System.out.println("x=" + x);

    }

    int x = 100;

    System.out.println("x=" + x);

  }

}

二、构造代码块

  直接在类中成员位置定义的没有加static关键字的代码块{}称为构造代码块,每次调用构造方法执行前都会执行构造代码块。作用:可以把多个构造方法中共同代码放到一起,对对象进行初始化。例子程序如下:

public class CodeDemo02{

  public CodeDemo02(){

     System.out.println("========这是构造方法=========");

  }

  //这是构造代码块,而且在new对象时,构造代码块优先构造方法执行

  {

     System.out.println("=========这是构造块!=========");

  }

  public static void main(String[] args){

     new CodeDemo02();

     new CodeDemo02();

  }

}

三、静态代码块

  使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化,静态代码块只执行一次。例子程序如下:

public class CodeDemo03{

  static{

    System.out.println("这是主类中的静态代码块!");

  }

  public static void main(String[] args){

    new Demo();

    new Demo();

     new Demo();

  }
}

class Demo{

  static{

     System.out.println("这是Demo类中的静态代码块!");

  }

  {

     System.out.println("这是Demo类中的构造块!");

  }

  public Demo(){

    System.out.println("这是构造方法!");

  }
}

  静态块优先于主方法的执行,静态块优先于构造方法的执行,而且只执行一次!

以上三种代码:
面试题:静态代码块,构造代码块,构造方法的执行顺序?
        静态代码块---构造代码块---构造方法
        静态代码块:只执行一次。
        构造代码块:每次调用构造方法执行前都会执行。

补充:看以下代码写执行结果

class Fu{

static{
System.out.println("静态代码块Fu");
}

{
System.out.println("构造代码块Fu");
}

public Fu(){
System.out.println("构造方法Fu");
}
}

class Zi extends Fu{
static{
System.out.println("静态代码块Zi");
}

{
System.out.println("构造代码块Zi");
}

public Zi(){
System.out.println("构造方法Zi");
}
}

public class ExtendsTest {
public static void main(String[] args) {
Zi zi = new Zi();
}
}

执行结果:
静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi
分析:执行main方法时,发现Zi类,类加载器去加载Zi类,发现继承Fu类,先加载Fu类静态代码块(静态随着类加载,然后加载子类静态代码块)。
new Zi();先执行Fu类初始化(成员默认初始化,显示初始化,构造方法初始化)构造代码块和构造方法,然后执行子类构造代码块和构造方法。


四、同步代码块

  同步代码块主要出现在多线程中。

未完待续(代码块在继承中的执行顺序)..........

猜你喜欢

转载自adoph.iteye.com/blog/2329366