1.在加载类时初始化静态代码块,且只初始化一次。静态代码块属于类。
2.在new一个对象时,先初始化成员变量区域。
3.按顺序运行构造代码块。
4.运行构造方法内部的代码初始化
(new 对象时,先加载父类)
package com.orderofinitialize;
public class SuperClass {
private String name;
private int x=3;
private int y;
public static String nameS;
public SuperClass() {
}
public SuperClass(String name,int y) {
this.name=name;
this.y=y;
}
public String getName() {
return name;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
{
y=4;
}
static {
nameS="nameS";
System.out.println("Superclass static code block");
}
}
package com.orderofinitialize;
public class SubClass extends SuperClass{
public SubClass() {
super();
}
{
System.out.println("subclass construct code block ");
}
static {
System.out.println("subclass static code block");
}
}
package com.orderofinitialize;
public class Test {
public static void main(String[] args) {
System.out.println("/* new subclass */");
SubClass sb=new SubClass();
sb.getClass();
System.out.println("------static code block initialize only once \n");
System.out.println("/* firstly,static code initialize while class loading*/");
System.out.println(SuperClass.nameS);
SuperClass sc=new SuperClass();
System.out.println("/* secondly,member variable initialize */");
System.out.println(sc.getName());
System.out.println(sc.getX());
System.out.println("/* thirdly,construct code block initialize */");
System.out.println(sc.getY());
SuperClass sc1=new SuperClass("sc1",5);
System.out.println("/* fourthly, constructor code */");
System.out.println(sc1.getName());
System.out.println(sc1.getX());
System.out.println(sc1.getY());
}
}
output:
/* new subclass */
Superclass static code block
subclass static code block
subclass construct code block
------static code block initialize only once
/* firstly,static code initialize while class loading*/
nameS
/* secondly,member variable initialize */
null
3
/* thirdly,construct code block initialize */
4
/* fourthly, constructor code */
sc1
3
5
本文深入探讨了Java中类加载过程中初始化顺序的重要性,从静态代码块、成员变量初始化、构造代码块到构造方法内部初始化的详细流程进行解析,并通过实例展示了初始化过程的实现方式。
158

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



