JAVA的小问题.........

来源:百度知道 编辑:UC知道 时间:2024/06/02 10:24:50
public class Seven {
String s;
{
s = "instance initialization";
}
Seven(){
System.out.println(s);
}
public static void main(String[] args) {
new Seven();
}
}
这个程序可以运行,重要的是这一段我看不明白.谁能解答下原由为什么要这样?
String s;
{
s = "instance initialization";
}

{
s = "instance initialization";
}
是一个初始化块,它的特点是初始化块会在构造方法之前被系统调用,在这个例子中,既然能够正常输出变量S,并且它不为空,也就表明了变量S在执行构造方法之前就已经被初始化了,如果想更清楚的看到这个效果,我们把上面程序改动一下
public class Seven {
String s;
{
System.out.println("AAAAAAAA") ;
}
Seven(){
System.out.println("BBBBBBBBB") ;
}
public static void main(String[] args) {
new Seven();
}
}
你会发现先输出的是"AAAAAAAAAA",这就表示初始化块是在构造方法之前执行的