1.总体顺序
(1)虚拟机在首次加载java类的时候,会对静态代码块,静态成员变量,静态方法进行一次初始化
(2)类实例化过程,按照父子继承关系进行初始化,首先执行父类的代码块,然后是父类的构造方法;再执行子类的代码块,最后是子类的构造方法
2.实例
package my.acm;
public class Order {
public static void main(String[] args)
{
TestLoadOrder s = new TestLoadOrder();
}
}
class Father
{
static
{
System.out.println("父类静态代码块加载");
}
{
System.out.println("父类代码块加载");
}
public Father()
{
System.out.println("父类构造函数");
}
}
class TestLoadOrder extends Father
{
static
{
System.out.println("静态代码块加载");
}
{
System.out.println("代码块加载");
}
public TestLoadOrder()
{
System.out.println("构造函数");
}
public TestLoadOrder getInstance()
{
return Inner.test;
}
}
结果为:
父类静态代码块加载
静态代码块加载
父类代码块加载
父类构造函数
代码块加载
构造函数
本文通过一个具体的Java示例程序详细介绍了Java中类的加载与初始化顺序,包括静态代码块、静态成员变量、静态方法及其实例化过程中的初始化流程。
252

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



