方案1:靜態塊VS中的靜態變量初始化順序
class A{
static int foo=56789;
static{
foo=999;
}
public static void main(String[] args) {
System.out.println(foo);
}
}
輸出:999
方案2:
class A{
static {
foo=999;
}
static int foo=56789;
public static void main(String[] args) {
System.out.println(foo);
}
}
輸出:56789
在情形2如何它將內存分配給foo變量(在靜態塊中),因爲沒有提及數據類型(作爲代碼)從頂部到底部運行)。
是不是你的問題實際上是你的問題的答案? – 2014-09-01 13:57:00
代碼通常不從上到下運行嗎?如果你交換兩個語句的順序,他們不會改變它們運行的順序嗎?這裏的驚喜在哪裏? – 2014-09-01 13:59:20
@PeterLawrey lawrey在場景2中,它如何將內存分配給foo變量,因爲在靜態塊中沒有提及數據類型 – atti 2014-09-01 14:27:58