java初始化代码块

java类中数据域的初始化有三种方式:

1.声明的同时初始化

2.构造器中进行初始化

3.在初始化块中做初始化

初始化代码块分为静态域代码块和实例域代码块,静态域代码块在类第一次被加载时被执行,实例域代码块在创建对象时被执行,一个类中可以多个代码块。

 1 public class ConstructorTest {
 2     public static void main(String[] args) {
 3         EmployeeTest employee=new EmployeeTest();
 4         
 5         System.out.println("employee name is " + employee.getName());
 6         Thread hook = new Thread() {
 7             public void run() {  
 8                 System.out.println("====================" );
 9             }
10             
11         };
12         
13         System.out.println("--------------------" );
14         System.out.println("employee name is " + employee.getName());
15         Runtime.getRuntime().addShutdownHook(hook);
16     }
17 }
18 
19 class EmployeeTest {
20     private static int nextId=0; //声明时初始化
21     
22     private String name="无名氏";    //声明时初始化
23     
24     static {
25         nextId = 3;    //静态域代码块做初始化
26         System.out.println("静态域代码块调用1");
27     }
28     
29     static {
30         nextId = 5;    //静态域代码块做初始化
31         System.out.println("静态域代码块调用2");
32     }
33     
34     {
35         name="张三";    //实例域代码块做初始化
36         System.out.println("创建类的实例时执行的代码块1");
37     }
38     
39     {
40         name="李四"; //实例域代码块做初始化
41         System.out.println("创建类的实例时执行的代码块2");
42     }
43     
44     public EmployeeTest() {
45         // TODO Auto-generated constructor stub
46         name="王五";
47         System.out.println("构造器方法调用");
48     }
49 
50     public String getName() {
51         return name;
52     }
53 
54     public void setName(String name) {
55         this.name = name;
56     }
57     
58     
59     public void finalize() {
60         System.out.println("finalize");
61     }
62     
63     public static void printNextId() {
64         System.out.println("nextId=" + nextId);
65     }
66 }
View Code

 

执行结果:

1 静态域代码块调用1
2 静态域代码块调用2
3 创建类的实例时执行的代码块1
4 创建类的实例时执行的代码块2
5 构造器方法调用
6 employee name is 王五
7 --------------------
8 employee name is 王五
9 ====================

 

posted on 2020-04-17 23:28  pcant  阅读(762)  评论(0编辑  收藏  举报