Java运行优先级

super > static变量|static代码块 >普通变量 |普通代码块>构造方法 > 普通方法

同级之间执行 从上到下的顺序

如果父类和子类都有static代码块,先将父类代码块执行完再子类代码块,然后父类所以方法从上到下执行完,执行子类方法。子类如果还有static变量,即为先将父类代码块执行完再子类代码块,再静态变量,再进入父类执行方法。

子类重写不能小于父类方法访问权限的范围
子类不能抛出比父类更广泛的异常


以下代码的输出结果是?

public class B
{
    public static B t1 = new B();
    public static B t2 = new B();
    {
        System.out.println("构造块");
    }
    static
    {
        System.out.println("静态块");
    }
    public static void main(String[] args)
    {
        B t = new B();
    }
}

解析:

并不是静态块最先初始化,而是静态域,静态域中包含静态变量、静态块和静态方法,其中需要初始化的是静态变量和静态块,但是内部代码还未执行。

而他们两个的初始化顺序是靠他们俩的位置决定的,static代码块是类加载时就初始化了,但是内部代码还未执行,先执行静态变量的,由于类已经加载过了,所有static变量构建的对象只执行普通代码块,执行完毕再出来执行static代码块的代码。

答案:构造块 构造块 静态块 构造块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值