1.静态代码块>构造代码块>构造函数>普通代码块

package com.bdqn.overload;
class X extends T {
    static {
        System.out.println("t静态代码块4");
    }

    {
        System.out.println("t构造块4");
    }

    public X() {
        System.out.println("t构造函数 块           4!");
    }
}
class T extends St {
    static {
        System.out.println("t静态代码块3");
    }

    {
        System.out.println("t构造块3");
    }

    public T() {
        System.out.println("t构造函数 块            3!");
    }
}

class St extends TestStatic {
    static {
        System.out.println("st静态代码块2");
    }

    {
        System.out.println("st构造块2");
    }

    public St() {
        System.out.println("st构造函数 块           2!");
    }
}

public class TestStatic {
    // 静态代码块 只加载一次 静态加载早于非静态
    static {
        System.out.println("静态代码块1");
    }
    /*
     * 构造代码块在创建对象时被调用,每次创建对象都会调用一次,
     * 但是优先于构造函数执行。需要注意的是,听名字我们就知道,
     * 构造代码块不是优先于构造函数执行,而是依托于构造函数,也就是说,如果你不实例化对象,构造代码块是不会执行的。
     */
    {
        System.out.println("构造块1");
    }

    public TestStatic() {
        System.out.println("构造函数          1!");
    }
    /*
     * 当涉及到继承时,按照如下顺序执行:
        执行父类的静态代码块,并初始化父类静态成员变量
        执行子类的静态代码块,并初始化子类静态成员变量
        执行父类的构造代码块,执行父类的构造函数,并初始化父类普通成员变量
        执行子类的构造代码块, 执行子类的构造函数,并初始化子类普通成员变量
     */

}

 

测试类

package com.bdqn.overload;

public class Testf {
    public static void main(String[] args) {// 值传递
//        静态代码块>构造代码块>构造函数>普通代码块 
        TestStatic ts = new TestStatic();
        St s = new St();
        T t = new T();
        X x = new X();
        
        String a = "abc";
        String b = "abc";
        String c = new String("abc");
        String d = "a" + "b" + "c"; // 相当于 "abc"
        System.out.println(a == b);
        System.out.println(b == c);
        System.out.println(c == d);
        System.out.println(d == a);
    }
}
输出结果:

静态代码块1
构造块1
构造函数          1!
st静态代码块2
构造块1
构造函数          1!
st构造块2
st构造函数 块           2!
t静态代码块3
构造块1
构造函数          1!
st构造块2
st构造函数 块           2!
t构造块3
t构造函数 块            3!
t静态代码块4
构造块1
构造函数          1!
st构造块2
st构造函数 块           2!
t构造块3
t构造函数 块            3!
t构造块4
t构造函数 块           4!
true
false
false
true
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卧虎3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值