在下面的代碼段爲什麼getX()
方法執行第一而非構造:在執行構造的主體之前爲什麼的getX()方法執行第一而不是構造
public class ConsructorQuestion {
int x = getX(); // same this.getX();
public int getX() {
System.out.println(x + " via method ");
return 10;
}
public ConsructorQuestion() {
System.out.println(x+" via constructor");
}
public static void main(String[] args) {
ConsructorQuestion t = new ConsructorQuestion();
}
}
因爲這就是類初始化的工作原理。你爲什麼期望別的嗎? – shmosel
它實際上是在這裏工作的實例初始化。 –
[實例初始值設定項與構造函數有什麼不同?](https://stackoverflow.com/questions/1355810/how-is-an-instance-initializer-different-from-a-constructor)可能重複?還https://stackoverflow.com/questions/335311/static-initializer-in-java,https://stackoverflow.com/questions/12550135/static-block-vs-initializer-block-in-java,https:/ /stackoverflow.com/questions/6763550/why-java-instance-initializers以及與之相關的問題。 –