1 package demo;
2
3 /*
4 * 在类 的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,
5 * 它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
6 */
7 public class Test {
8 public static void main(String[] args) {
9 House h = new House();
10 h.f();
11 }
12 }
13
14 class Window {
15 Window(int maker) {
16 System.out.println("Window(" + maker + ")");
17 }
18 }
19
20 class House {
21 Window w1 = new Window(1);
22
23 House() {
24 System.out.println("House()");
25 w3 = new Window(33);
26 }
27
28 Window w2 = new Window(2);
29
30 void f() {
31 System.out.println("f()");
32 }
33
34 Window w3 = new Window(3);
35 }
36 //结果:
37 //Window(1)
38 //Window(2)
39 //Window(3)
40 //House()
41 //Window(33)
42 //f()
1 package demo;
2
3 /*
4 * 先执行static修饰的成员,而且只被执行一次
5 */
6 public class Test1 {
7 public static void main(String[] args) {
8 System.out.println("Creating new Cup() in main");
9 new Cup();
10 System.out.println("Creating new Cup() in main");
11 new Cup();
12 table.f2(1);
13 cup.f3(1);
14 }
15
16 static Table table = new Table();
17 static Cup cup = new Cup();
18 }
19
20 class Bowl {
21 Bowl(int maker) {
22 System.out.println("Bowl(" + maker + ")");
23 }
24
25 void f1(int maker) {
26 System.out.println("f1(" + maker + ")");
27 }
28 }
29
30 class Table {
31 static Bowl bowl1 = new Bowl(1);
32
33 Table() {
34 System.out.println("Table()");
35 bowl1.f1(1);
36 }
37
38 void f2(int maker) {
39 System.out.println("f2(" + maker + ")");
40 }
41
42 static Bowl bowl2 = new Bowl(2);
43 }
44
45 class Cup {
46 Bowl bowl3 = new Bowl(3);
47 static Bowl bowl4 = new Bowl(4);
48
49 Cup() {
50 System.out.println("Cup()");
51 bowl4.f1(2);
52 }
53
54 void f3(int maker) {
55 System.out.println("f3(" + maker + ")");
56 }
57
58 static Bowl bowl5 = new Bowl(5);
59 }
60 结果:
61 Bowl(1)
62 Bowl(2)
63 Table()
64 f1(1)
65 Bowl(4)
66 Bowl(5)
67 Bowl(3)
68 Cup()
69 f1(2)
70 Creating new Cup() in main
71 Bowl(3)
72 Cup()
73 f1(2)
74 Creating new Cup() in main
75 Bowl(3)
76 Cup()
77 f1(2)
78 f2(1)
79 f3(1)