public class Person{
{
int a =6;
if(a>4){
System.out.println("Person的初始化块局部变量a的值大于4");
}
System.out.println("Person的初始化块");
}
public Person(){
System.out.println("Person类的无参数构造器");
}
public static void main(String[] args){
new Person();
}
}
程序输出:
Person的初始化块:局部变量a的值大于4
Person初始化块
Person类的无参数构造器
从运行结果可以看出,当创建java对象时,系统总是先调用该类里定义的初始化块。
初始化块没有名字,也没有标识,不能通过对象或者类来调用。初始化块只在创建java对象时隐式执行,而且在执行构造器之前执行。
public class Test{
{
a=6;
}
int a =9;
}
public static void main(String[] args){
System.out.println(new Test().a);//这行代码输出为9;
}
总结:当java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了),接着程序开始对这些实例属性执行初始化。其初始化顺序是:先执行初始化块或声明属性时指定的初始值,然后再执行构造器里指定的值。
















