java 初始化顺序_java类初始化顺序

代码

第一步,程序先调用静态的变量属性(45行代码),得到table对象,然后执行Table类中的两个静态变量 bow1和bow2,调用Bow类中的构造方法,输出Bowl(1)和Bowl(2),接着执行类中构造方法,输出Table()和f1(1),(注意,这里并没有调用Table类中的f2方法)。

第二步,执行46行代码static Cupboard cupboard = new Cupboard(); 同第一步一样,输出Bowl(4),Bowl(5),这里初始化并调用了Bowl构造方法(Bowl bowl3 = new Bowl(3)),记住初始化顺序:变量-->构造-->普通方法(请看上一篇文章)。然后执行Cupboard类的构造方法,输出Cupboard()和f1(2)。

第三步,执行静态方法(38行),先打印“Creating new Cupboard”,再调用Cupboard类对象,依次输出Bowl(3),Cupboard(),f1(2),然后执行一遍第三步。

最后,再调用table.f2(1),Table类中f2方法,输出f2(1)。输出结果如下图。

据此,可判断出java类初始化的顺序为:静态属性(静态变量)>静态方法(包括静态方法块,也就是static{......})> 普通属性 >普通方法块({.....},以后补充)> 构造函数 > 普通方法。

也可看出静态的方法和静态变量被调用时只执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值