假設如下:在Java中,靜態方法中聲明的變量本身是靜態的嗎?
private static boolean A() { int parsedUntil = 0; ... ... ... }
是parsedUntil認爲是一個靜態變量?我注意到我不能在這個靜態函數中聲明它是靜態的。
後續問題:我讀了一個靜態變量只會初始化一次。這是否意味着我第一次調用函數A()的值將被設置爲零,但是每隔一次我調用A()時,該行都被省略了?
假設如下:在Java中,靜態方法中聲明的變量本身是靜態的嗎?
private static boolean A() { int parsedUntil = 0; ... ... ... }
是parsedUntil認爲是一個靜態變量?我注意到我不能在這個靜態函數中聲明它是靜態的。
後續問題:我讀了一個靜態變量只會初始化一次。這是否意味着我第一次調用函數A()的值將被設置爲零,但是每隔一次我調用A()時,該行都被省略了?
不,它不是一個靜態變量。這是一個局部變量。在方法中聲明的任何變量都是局部變量。如果你想有一個靜態變量,你必須聲明它的方法外:
private static int parsedUntil = 0;
有沒有宣佈這隻能一個方法中使用靜態變量的方式。
沒有,A()
是一個靜態方法,並parsedUntil
裏面A.一個局部變量
修飾符像static
不是局部變量有效(僅final
被允許AFAIK)
後續問題:我讀過一個 的靜態變量,只會初始化一次 。
真正
是否意味着 我第一次調用函數A()的 值將被設置爲零,但每 其他的時間我稱之爲(),該行是 省略?
因爲parsedUntil不是靜態字段,而是靜態方法中的局部變量,事實並非如此。
但是如果我在函數中聲明它是最終的,它意味着什麼?關於我讀過的類,final關鍵字意味着這樣的類的功能不能被子類重載。 (也許這樣的課程甚至不能延長!?) –
在局部變量中,最後表示該變量不能被重新賦值 –
static
變量不能在方法內部本地聲明 - 它們只能是類的成員,並且在加載類時會被初始化。
謝謝!當你說他們只能是一個班級的成員時,我記得我已經閱讀過,這很有道理! –
Java沒有像C或C++這樣的靜態局部變量,所以你永遠不會有static int parsedUtil = 0;
。
所以不,parsedUtil
沒有任何意義上的「靜態」。每次執行該方法時,其值都被初始化爲0。
不,它不是C.
parsedUntil不是靜態的。這只是一個局部變量。你不能在方法中聲明靜態變量。
關於第二個問題 - 靜態變量可以根據需要分配多次。您不能僅重新分配最終變量。
有關靜態vs最終的很好的解釋,謝謝! –
這是關於範圍。無論方法類型如何,作用域都是本地方法。 – Robin
@Robin:不,這是關於一生的。在其他語言中,「靜態局部」可以具有單一方法的作用域,但是有時是有用的靜態生命週期;在這兩種情況下,範圍對於方法來說都是本地的,但是壽命是不同的。 – configurator