java 执行顺序

public class Test {                                                                  行1
public static Test t = new Test("a");                             行2
public int i = print(2);                                                       行3
{                                                                                         行4
    System.out.println("构造块");                                  行5
}                                                                                         行6
public Test(String str){                                                  行7
System.out.println("构造块"+str);                        行8
}                                                                                        行9
static                                                                                 行10
{                                                                                         行11
    System.out.println("静态块");                                  行12
}                                                                                        行13
public static int print(int i){                                           行14
System.out.println("print: "+i);                             行15
return i;                                                                    行16
}                                                                                        行17
public static void main(String args[]){                       行18
         Test t=new Test("b");                                                   行19
    }                                                                                            行20
}                                                                                                行21

结果:

print: 2      (结果:1)
构造块       (结果:2)
构造块a    (结果:3)
静态块      (结果:4)
print: 2      (结果:5)

构造块      (结果:6)

构造块b    (结果:7)

如果没有 行19  结果1-4 会输出,因为java 在对代码进行编译的时候,对静态代码进行初始化。

当调用new创建对象时,会先初始化class非静态变量,然后调用本类构造方法,所以在初始化 t 时,先调用print方法初始化非静态变量i,然后每次调用构造方法,都会先调用

构造块  代码,然后调用静态块(只调用一次)。


执行顺序:静态块 构造块 非静态变量 构造函数

对于静态块和静态属性或者非静态块和属性,初始化顺序决定于它们在代码中的顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值