2014-09-01 165 views
-3

方案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變量(在靜態塊中),因爲沒有提及數據類型(作爲代碼)從頂部到底部運行)。

+2

是不是你的問題實際上是你的問題的答案? – 2014-09-01 13:57:00

+0

代碼通常不從上到下運行嗎?如果你交換兩個語句的順序,他們不會改變它們運行的​​順序嗎?這裏的驚喜在哪裏? – 2014-09-01 13:59:20

+0

@PeterLawrey lawrey在場景2中,它如何將內存分配給foo變量,因爲在靜態塊中沒有提及數據類型 – atti 2014-09-01 14:27:58

回答

0

靜態塊/變量按照它們放置在源代碼中的順序執行。即您用眼睛看到的順序。

從上到下。

+0

@downvoter,關心評論。我想糾正我的文章。 – 2014-09-01 13:58:57

+0

-3。好啦好啦。我會讓你們振作起來。哈哈 – 2014-09-01 14:00:57