package test;
publicclassClassOrderTest {static class A{
C c =new C();
publicA(){
System.out.println("A's Constructor");
}
static {
System.out.println("A's static ");
}
}
static class B extends A{
publicB(){
System.out.println("B's Constructor");
}
D d = new D();
C c =new C();
static {
System.out.println("B's static ");
}
}
static class C {
publicC(){
System.out.println("C's Constructor");
}
static {
System.out.println("C's static");
}
}
static class D{
publicD(){
System.out.println("D's Constructor");
}
static {
System.out.println("D's static");
}
}
publicstaticvoidmain(String args[]){
System.out.println("start");
B b = new B();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
上面的代码中,因为几个类都要在Main方法中运行,因此就声明为static类型了,这个大家都知道的吧,不声明为static时,编译器会报错:No enclosing instance of type ClassName is accessible. 主要使用了四个静态内部类。代码比较简答,就不作过多的说明了。
今天要说的问题是,Java中代码的执行顺序,不知道叫这个题目合适不。这里先定义几个类别:构造方法(如:public className(){……})静态代码块(如:static {……})类的属性变量(如:ClassA a = new ClassA())这些它们在类被初始化时执行的顺序时怎么样的呢?代码package test;public class ClassO