java系统初始化_java中的初始化块

public class Person

{

int a=6;//声明实例变量制定默认值,也可以认为是对象的初始化代码,执行顺序与源代码中的排列顺序相同

{

System.out.println("Person初始化块");

}

{

a=9;

if(1)

{

System.out.println("Person第二个初始化块");

}

}

public Person()

{

System.out.println("Person无参构造器");

}

public static void main(String[] args)

{

new Person();

System.out.println(new Person().a);//a=9

}

}

程序运行结果:

Person初始化块

Person第二个初始化块

Person无参构造器

从结果可以看出,当创建java对象时,系统总是先调用该类的初始化块。如果一个类中有多个普通初始化块,按定义的先后顺序执行。

注:初始化块总是在构造器之前执行。

静态初始化块:用static修饰,又叫类初始化块。初始化块只能用static修饰。

与普通初始化块(没有修饰符修饰)的区别是:

普通初始化块负责对对象初始化;

静态初始化块负责对类进行初始化。它通常对类变量执行初始化处理,不能对实例变量进行初始化处理。

系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行(这时执行普通初始化块)。因此静态初始化块总比普通初始化块先执行。

系统在类初始化阶段执行静态初始化块时,首先一直追溯到java.lang.Object类(如果包含静态初始化块),限制性java.lang.Object类的静态初始化快(如果有),然后执行父类的静态初始化快……最后执行该类的静态初始化块,经过这个过程才完成类的初始化。普通初始化块也类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值