初始化块
public class HideTest
{
//先执行初始化块将a Field赋值为6
{
a = 6;
}
//再执行将a Field赋值为9
int a = 9;
public static void main(String[] args)
{
//下面代码将输出9。
System.out.println(new HideTest().a);
}
}
a = 6先执行的
为什么没有给a指定类型也能初始化?
------解决方案--------------------1. 初始化块执行的时候,是为field 初始化了,所以它的类型是已知的。
2. 初始化执行的时候和你放的位置有关,你这里的放置就相当于,首先将a初始化为6,然后你本身声明的时候又给了一个显示的初始化值,就又被替换成9了。如果你把初始化块放在声明的后面,就会产生先被初始化为9,后被替换为6.
请参考下面的文章:
http://blog.csdn.net/shiyanming1223/article/details/6888188