关于属性初始化的顺序问题
三种对象属性初始化方式,分别为:
1、声明时直接初始化;
2、代码块初始化;
3、构造方法初始化。
代码执行时,首先执行静态方法,到new Hero()时跳转到构造方法public Hero(),
但并不执行构造方法,而是紧接着直接跳转到class Hero下的显式代码块,最后再执行构造方法。
Debug后发现在显式代码块中,声明初始化和代码块初始化按顺序执行,在这个例子中没有优先级的区别。
package stu.dale.funny;
public class Hero {
public String name = "some hero"; ///声明时直接初始化
{
name = "the hero";代码块初始化
}
public Hero(){
name = "one hero";///构造方法初始化
}
public static void main(String[] args) {
Hero garen=new Hero();
System.out.println(garen.name);
}
}