Java的初始化顺序
2016-08-31 00:00
309 查看
当一个类被加载,class.forname或者使用静态方法时,总是先初始化父类的static部分,再初始化子类的static部分,非静态成员一律不初始化。任何一个类的静态部分只被初始化一次
上述代码输出
MAIN
Static area in father class
Static area in TEST0
当一个类被实例化时,如果类还没有被加载,则先加载,再实例化。实例化中先运行父类的构造函数,再运行子类的构造函数。如果类中的成员没有被初始化,其值为null,其相当于还没有被加载。
上面程序输出为
MAIN
Static area in father class
Static area in TEST0
constructor in father class
constructor in TEST0
null
java最开始处理main函数时,相当于如上静态加载main类。Java会线执行Main类父类的静态块,然后是Main类的静态块。
public class Test{ public static void main(String[] args) { System.out.println("MAIN"); Test0.Fun1(); } } class Test0 extends Test1{ static{ System.out.println("Static area in TEST0"); }; Test3 t3; public static void Fun1(){ } } class Test1{ static{ System.out.println("Static area in father class"); }; Test1(){ System.out.println("constructor in father class"); } }
上述代码输出
MAIN
Static area in father class
Static area in TEST0
当一个类被实例化时,如果类还没有被加载,则先加载,再实例化。实例化中先运行父类的构造函数,再运行子类的构造函数。如果类中的成员没有被初始化,其值为null,其相当于还没有被加载。
public class Test{ public static void main(String[] args) { System.out.println("MAIN"); Test0 t0 = new Test0(); System.out.println(t0.t3); } } class Test0 extends Test1{ static{ System.out.println("Static area in TEST0"); }; Test3 t3; public static void Fun1(){ } Test0(){ System.out.println("constructor in TEST0"); } } class Test1{ static{ System.out.println("Static area in father class"); }; Test1(){ System.out.println("constructor in father class"); } } class Test3{ static{ System.out.println("Static area in member class"); }; Test3(){ System.out.println("constructor in menber class"); } }
上面程序输出为
MAIN
Static area in father class
Static area in TEST0
constructor in father class
constructor in TEST0
null
java最开始处理main函数时,相当于如上静态加载main类。Java会线执行Main类父类的静态块,然后是Main类的静态块。
相关文章推荐
- Java:深度理解JAVA本身的构造器及子父类构造方法的初始化顺序
- Java中类初始化的顺序
- JAVA笔试之初始化顺序
- java 初始化顺序
- JAVA类初始化顺序,经典例程
- Java初始化顺序
- [转贴] Java程序初始化顺序
- [java]初始化顺序
- Java中静态变量和非静态变量的初始化顺序
- JAVA面试题解惑系列(一)――类的初始化顺序
- Java中类初始化的顺序
- java中初始化的顺序
- 初始化顺序(Thinking in Java中的一段有意思的例子)
- java对象初始化顺序
- Java程序初始化顺序
- Java中类初始化的顺序
- Java中类初始化的顺序
- JAVA初始化顺序
- java学习笔记3:对象的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序