Java对象的初始化顺序,带图详解

2023年2月14日 666点热度 0人点赞 0条评论

编译器并不是为每个引用都创建默认的对象,以此来避开不必要的负担。
但是,如果想初始化这些引用,可以在代码的下面位置进行初始化。
1、在定义对象的时候进行初始化(直接手动初始化)
2、在构造器中进行初始化
3、惰性初始化(使用到时才进行初始化)
4、使用实例初始化(代码块初始化)
代码:

class Soap {
    private String s;
    Soap(){
        System.out.println("one Soap() Constructor");
        s="constructed";
    }

    @Override
    public String toString() {
        return s ;
    }
}

public class Bath{
    //定义对象初始化
    private String s1="happy",s2="happy",s3,s4;
    private int i;
    private float f;
    private Soap soap;

    //构造器初始化
    Bath(){
        s3="Joy_01";
        f=3.14f;
        soap=new Soap();
    }

    //实例初始化
    {
        i=10;
        System.out.println("i=="+i);
    }

    public String toString(){
        //惰性初始化,也就是说在用到的时候才进行初始化
        if(s4==null){
            s4="Joy_02";
            System.out.println("Joy_02");
        }
        return  "s1="+s1+"\n"+
                "s2="+s2+"\n"+
                "s3="+s3+"\n"+
                "s4="+s4+"\n"+
                "i="+i+"\n"+
                "source="+soap;
    }

    public static void main(String[] args) {
        Bath bath = new Bath();
        System.out.println(bath);
    }
}

Java对象的初始化顺序,带图详解插图

由上图可以知道,初始化顺序:
①定义对象初始化>②实例初始化>③构造器初始化>④惰性初始化

小小调酒师

此刻打盹,你将做梦; 此刻学习,你将圆梦。 个人邮箱:shellways@foxmail.com

文章评论