代码块含义:使用{ }括起来的代码

代码块类型:

1.局部代码块:定义在方法体中。

2.构造代码块:也叫初始化代码块,定义在类中方法体之外。

3.静态代码块:定义在类中方法体之外,被static修饰符所修饰,

随着类加载而执行。

4.同步代码块:在Java的多线程中,为解决并发操作可能造成的异常,

而引入同步监视器,使用同步监视器的通用方法就是同步代码块。

构造代码块VS构造方法:

在Java程序中构造代码块先执行,然后才是构造方法。

静态代码块:用static修饰的代码块

1.可以有输出语句。

2.可以对类的属性、类的声明进行初始化操作。

3.不可以对非静态的属性初始化。即不可以调用非静态的属性和方法。

4.若有多个静态的代码块,那么按照从上到下的顺序依次执行。

5.静态代码块的执行要先于非静态代码块。

6.静态代码块随着类的加载而加载,且只执行一次。

非静态代码块:没有static修饰的代码块

1.可以有输出语句。

2.可以对类的属性、类的声明进行初始化操作。

3.除了调用非静态的结构外,还可以调用静态的变量或方法。

4.若有多个非静态的代码块,那么按照从上到下的顺序依次执行。

5.每次创建对象的时候,都会执行一次。且先于构造器执行。

构造代码块VS静态代码块:

1.静态代码块,最多执行一次。

2.构造代码块,每次创建对象都会执行。

 1 public class CodeBlockDemo {
 2   public static void main(String[] args) {
 3     CodeBlockClass codeBlockClass = new CodeBlockClass();
 4     System.out.println(codeBlockClass.i);
 5     System.out.println(CodeBlockClass.name);
 6
 7     //测试构造代码块和静态代码的执行特征:
 8     CodeBlockClass codeBlockClass1 = new CodeBlockClass();
 9     CodeBlockClass codeBlockClass2 = new CodeBlockClass();
10   }
11 }
12
13 class CodeBlockClass {
14   int i;
15   static String name;
16
17   public CodeBlockClass() {
18     System.out.println("contructor method");
19   }
20
21   //构造代码块
22   {
23     i = 10;
24     System.out.println("constructor block: " + i);
25   }
26
27   //静态代码块
28   static {
29     System.out.println("static block");
30   }
31
32   public void localCodeBlock () {
33
34     //定义局部代码块
35     {
36       int i = 10;
37       System.out.println(i);
38     }
39   }
40 }
12-26 07:03
查看更多