我正在为Java 7考试学习,我正在看一些试题。我似乎不明白为什么下面的程序按x y c g顺序返回。
我理解为什么首先运行x,因为它是一个静态初始化块,但请有人解释为什么y在c和g之前运行。
public class Triangle {
Triangle() {
System.out.print("c ");
}
{
System.out.print("y ");
}
public static void main(String[] args) {
new Triangle().go();
}
void go() {
System.out.print("g ");
}
static {
System.out.print("x ");
}
}发布于 2013-08-01 11:16:57
{
System.out.print("y ");
}是一个实例初始化块,在构造函数之前运行。因此,该代码相当于:
Triangle() {
System.out.print("y "); //initialisation block
System.out.print("c ");
}发布于 2013-08-01 11:19:31
订单将是静态块:
static {
System.out.print("x ");
}然后是实例初始化程序:
{
System.out.print("y ");
}它含蓄地:
Triangle() {
System.out.print("y ");
System.out.print("c ");
}阅读:
发布于 2013-08-01 11:19:52
"y“在块语句中,而不是在方法中。因此,在创建Triangle实例时,甚至在构造函数之前,都会执行块中的语句。
https://stackoverflow.com/questions/17992532
复制相似问题