- public class Temp09_27 {
- static String a="String_a";
- static String b;
-
- String c="String_c";
- String d;
-
- static{
- printStatic("before static");
- b="Strint_b";
- printStatic("after statuc");
- }
-
- public static void printStatic(String title)
- {
- System.out.println("-------"+title+"-------");
- System.out.println("a=\""+a+"\"");
- System.out.println("b=\""+b+"\"");
- }
-
- public Temp09_27()
- {
- print("before constructor");
- d="String_d";
- print("after constructor");
-
-
- }
- public void print(String title)
- {
- System.out.println("-------"+title+"-------");
- System.out.println("a=\""+a+"\"");
- System.out.println("b=\""+b+"\"");
- System.out.println("c=\""+c+"\"");
- System.out.println("d=\""+d+"\"");
- }
- public static void main(String[] args)
- {
- new Temp09_27();
- }
- }
复制代码 输出结果:- -------before static-------
- a="String_a"
- b="null"
- -------after statuc-------
- a="String_a"
- b="Strint_b"
- -------before constructor-------
- a="String_a"
- b="Strint_b"
- c="String_c"
- d="null"
- -------after constructor-------
- a="String_a"
- b="Strint_b"
- c="String_c"
- d="String_d"
复制代码 由以上可知Java类属性和对象的初始化顺序为:
1.类属性(静态变量)定义时的初始化,如以上代码中的:statiic String a="String_a"。
2.static 块中的初始化代码,如以上的:static{}中的b="String_b"。
3.对象属性(非静态变量)定义时的初始化,如以上中的:String c="String_c"。
4.构造函数中的初始化代码,如以上构造函数中的:d="String_d"。
自学中总结到的一点规律,希望对同学们有帮助。
|