class StaticSuper{
static{
System.out.println("super static block")
}
StaticSuper{
System.out.println("super constructor");
}
}
public class StaticTests extends StaticSuper{
static int rand;
static{
rand=(int)(Math.random()*6);
}
StaticTests(){
System.out.println("constructor");
}
publci static void main(String[] args){
System.out.pringln("in main");
StacticTest st =new StacticTests();
}
}
上面這段的輸出順訊是這樣的
super static block
static block 3
in main super constructor
constructor
在下小白。。誰能幫忙解釋一下為什麼是這個輸出順序
另外
像這種,是什麼意思?是方法?構造函數?還是啥意思,為啥沒有()符號
StaticSuper{
System.out.println("super constructor");
}
首先:按照你的代碼,運行結果應該是:
super static block
in main
super constructor
constructor
然後,你代碼裡面有許多錯誤,其中最大的就是你的構造方法沒有打括號,你就不用為沒有()疑惑了,是你沒有打。
然後說下結果的原因吧,
1.靜態方法塊是唯一一個可以在main方法執行的前執行的代碼塊
2.當實例化子類時,會先執行父類的構造方法,然後執行子類的構造方法。
了解上面的知識點 你就能很好的理解這段程序了。