(1月17日)關于Static,我想再延伸一下。有時候我們創建一個類,希望這個類的所有實例都公用一個變量,也就是說,所有這個類的對象都只有實例變量的一個Copy.那么這樣一個靜態實例變量的內存就不能在創建類的實例的時候分配了,因為大家用的都是這么一個,不需要再重新分配.因此Java為其分配永久存儲空間。 比如: class Block{ static int number=50 } 這樣定義之后,所有Block類的實例,不管是Block1,還是Block2,它們都訪問同一個number.這個number叫做類的變量,而不是實例變量.實際上靜態變量又叫做類變量。
另外碰到一個初學者經常會碰到的問題 non-static variable mainframe cannot be referenced from a static context 即在靜態方法中不能引用非靜態變量 為什么? 因為我們知道靜態的方法可以在沒有創建實例時使用,而申明為非靜態的成員變量是一個對象屬性,它只有在對象存在時引用,因此假如在對象未創建實例時我們在靜態方法中調用了非靜態成員方法自然是非法的,所以編譯器會在這種時候給各錯誤.