我喜歡這個 -主要方法執行而不執行靜態塊
class A {
static {
A obj = new A();
}
int x = 0;
public A() {}
public static int square(int x) {
return x * x;
}
public static void main(String[] args) {
//A obj = new A();
System.out.println("Hello World!" + square(4));
}
}
一類這個代碼給StackOverFlowException
如果我們main
方法創建一個新的對象,如鯁在無限循環的代碼。對於靜態塊也應該如此。但給代碼編譯和運行良好。誰能解釋這種行爲?
爲什麼即使你創建一個新的對象? – SacJn
創建一個新的對象不會在這裏導致一個'StackOverFlowException'。這一定是其他原因造成的。 – Paul
當類由ClassLoader加載時,靜態塊將只執行一次。 – jgitter