非静态字段的初始化其实都在构造器中,优先执行 静态方法
package com.hp.deom;
import com.hp.demo.Demo;
public class demo {
private static demo d = new demo();
private SubClass t = new SubClass();//可以看成在demo构造函数中t=new SubClass()
static
{
System.out.println(3);
}
public demo()
{ //t=new SubClass();
System.out.println(4);}public static void main(String [] args){System.out.println("Hello");}}class SuperClass{SuperClass(){System.out.println("构造SuperClass");}}class SubClass{static {System.out.println(1);}public SubClass(){System.out.println(2);}}
运行结果
1
2
4
3
Hello
Java类加载过程解析
本文通过一个具体的Java示例详细解析了Java类加载过程中非静态字段与静态字段的初始化顺序,以及构造函数与静态代码块的执行时机。通过运行结果验证了静态成员先于实例成员初始化,且静态代码块会在类加载时执行。
820

被折叠的 条评论
为什么被折叠?



