2012-03-30 88 views

回答

8

通常程序員不需要在靜態塊內聲明任何變量,通常這只是爲了確保初始化靜態變量以供所有類的實例使用(取決於靜態變量的作用域)。

在靜態塊中聲明的變量對於塊來說就像方法和構造函數變量一樣是局部的。

JDK Docs

+0

「通常程序員不需要在靜態塊中聲明任何變量」>>爲什麼不呢?如果您需要臨時對象來保存數據,您將在靜態塊中包含變量。 考慮一個場景,當你需要在算術後實例化一個靜態字段並且想讓代碼可讀時 'static float radius; 靜態浮動區域; 靜態最終浮點數PI = 3.14f; area =(float)(PI * Math.pow(radius,2)); }' – realPK 2016-07-02 20:08:27

10

在塊內聲明的變量只能在該塊內部訪問。靜態或無。

在靜態方法中聲明的變量是靜態的。他們只能訪問其他靜態變量或全局變量。

+0

但不同於C/C++的局部變量,這些變量並不真正‘走出去的範圍’的塊執行後,對不對? – 2012-03-30 21:20:17

+2

塊中的變量範圍是該塊。執行後,您無法訪問這些變量。這就是變量超出範圍的含義。一個靜態塊只執行一次,所以你無法重新輸入它。通常情況下,使用靜態塊來初始化類加載時以及運行構造函數之前的類中的靜態字段。靜態字段具有您提供的範圍:public,package protected,protected,private。 – 2012-03-31 09:23:20

4

它們就像方法變量。只能在塊範圍內訪問。

0

不,在塊之外不可見。它們像局部變量一樣行動 - 將靜態塊視爲在類初始化時被調用的匿名函數。他們不是靜態成員。

相關問題