类的属性组使用
public class class_attributes { static String a = "string-a"; static String b; String c="string_c"; String d; static { printStatic("before static"); b="string_b"; printStatic("after static"); } public static void printStatic(String title) { System.out.println("---------"+title+"---------"); System.out.println("a = ""+a+"""); System.out.println("b = ""+b+"""); } public class_attributes(){ 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 class_attributes(); } }
---------before static--------- a = "string-a" b = "null" ---------after static--------- a = "string-a" b = "string_b" ---------before constructor--------- a = "string-a" b = "string_b" c = "string_c" d = "null" ---------after constructor--------- a = "string-a" b = "string_b" c = "string_c" d = "string_d"
由此可以看出java类属性和对象属性的初始化顺序如下:
1.类属性定义时的初始化
2.static块中的初始化代码
3.对象属性定义时的初始化
4.构造方法中的初始化代码