我正在閱讀Java tutorials從開始,我有一個關於字段或變量的關鍵字static
的問題。正如Java
所述here:static關鍵字如何在Java中工作?
Class Variables (Static Fields)
甲類變量是與靜態修飾符聲明任何字段;這告訴編譯器,這個變量只有一個副本存在,而不管該類實例化了多少次。定義特定類型自行車的齒輪數量的字段可以被標記爲靜態的,因爲概念上相同數量的齒輪將適用於所有情況。
就這樣,我想,如果你有一個對象(在這種情況下,類Bicycle
的實例)和它內部的一個領域,其static
然後,獨立的,如果你refearing到bicycle1
或bicycle2
,它的靜態字段將具有相同的值。我錯了,還是理解得好?
我的意思是,如果我有:
Bicycle bicycle1 = new Bicycle();
Bicycle bicycle2 = new Bicycle();
,並在課堂上Bicycle
我有一個static
領域,如:
class Bicycle{
static int gears;
//Methods to set and get gears
}
而在bicycle1
我齒輪的值設置爲七:
bicycle1.setGears(7);
那麼如果我嘗試獲取齒輪的值我n bicycle2
我應該獲得與我在bicycle1
上設置的值相同的值,對嗎?
System.out.println(bicycle2.getGears()); //7
好了,這裏是我的疑惑因爲Java
在這上面我把帖稱:
這告訴編譯器恰好有一個存在
這個變量的副本
此副本存儲在哪裏?對象如何訪問該副本?這個副本何時創建?
[JVM如何手的可能重複(靜態變量?)(http://stackoverflow.com/questions/27229714/how-jvm-handles-static-variable) –
順便說一句,你通常不應該從實例調用靜態方法/屬性。我不知道爲什麼編譯器允許它 – Dici
@Dici如果我使用它們,請問你能解釋一下它可能產生的問題嗎? –