对象的初始化顺序
public class 初始化顺序 {
private String kkk="kkk";
private static String abc="abc";
{
System.out.println(“非静态快1”);
}
{
System.out.println(“非静态快2”);
}
static{
System.out.println(“静态快1”);
}
static{
System.out.println(“静态快2”);
}
public 初始化顺序()
{
System.out.println("构造方法");
}
public static void main(String[] args) {
new 初始化顺序();
}
}
输出结果为 静态快1 , 静态快2, 非静态快1, 非静态快2, 构造方法
由上面这个类分析结果如下
1 一个类中可以存在多个静态块与非静态块
2 多个静态块 一起执行 按照上下顺序
2类的初始化顺序为 静态属性—》非静态属性-》静态块-》非静态块-》构造方法
假如还存在父类的话 那么加载顺序是怎样了 例子:
package com.test;
class parent{
private String kkk="kkk";
private static String abc="abc";
{
System.out.println("父非静态块1");
}
{
System.out.println("父非静态块2");
}
static{
System.out.println("父静态块1");
}
static{
System.out.println("父静态块2");
}
public parent()
{
System.out.println("父构造方法");
}
}
public class 初始化顺序 extends parent{
private String kkk="kkk";
private static String abc="abc";
{
System.out.println("非静态块1");
}
{
System.out.println("非静态块2");
}
static{
System.out.println("静态块1");
}
static{
System.out.println("静态块2");
}
public 初始化顺序()
{
System.out.println("子构造方法"+kkk);
}
public static void main(String[] args) {
new 初始化顺序();
}
}
显示结果 :
父静态块1
父静态块2
静态块1
静态块2
父非静态块1
父非静态块2
父构造方法
非静态块1
非静态块2
子构造方法kkk
类的初始化顺序为 父类静态属性-》子类静态属性-》父类非静态属性-》子类的非静态属性-》父类静态块-》子类静态块—》父类非静态属块-》父类的构造方法-》子类非静态属块-》子类的构造方法-