2

私は Java SE 7 試験の勉強をしていて、サンプル問題を見ています。次のプログラムが順序で返される理由がわかりませんx y c g

が最初に実行される理由は理解xできます。これは静的な初期化ブロックであるためです。ycg

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 ");
}
}
4

4 に答える 4

4
{
    System.out.print("y ");
}

インスタンスの初期化ブロックであり、コンストラクターの前に実行されます。したがって、コードは次と同等です。

Triangle() {
    System.out.print("y "); //initialisation block
    System.out.print("c ");
}
于 2013-08-01T11:16:57.280 に答える