用static宣告的屬性或方法放在記憶體中的全域性資料區,歸類所有或者說歸所有的物件所有,不需要經過物件的例項化,直接用類名.的方式呼叫。通過person1和person2**體會一下static的作用。
public class person1
public string getname()
public void setage(int age)
public int getage()
public void setcity(string city)
public string getcity()
public person1(string name,int age) }
public class person2
public string getname()
public void setage(int age)
public int getage()
public static void setcity(string city)
public string getcity()
public person2(string name,int age) }
public class test1 }
所有人的城市都一樣的時候,**應該寫成person2那樣,當person1中的城市發生變化,生成了多少物件就要寫多少**來修改城市的變更,當寫成person2時,只需要修改類的這一屬性即可,需要注意的是,這時如果不是通過類person2.setcity("天津")來修改,而是通過某一物件p3.setcity("天津")來修改,可以達到一樣的效果,所有物件的city屬性都跟著改變,但是那樣寫不符合規範。
另外需要注意的是,所有靜態方法只能操作靜態成員,不能操作非靜態成員,因為靜態方法可以不經過類的例項化直接通過類名訪問,試想,如果,靜態方法可以訪問非靜態成員,則不需要經過類的例項化也可以訪問非靜態成員,會造成記憶體的混亂。
下面說一說static的應用,用static可以統計乙個類例項化了多少個物件,**如下:
class person
public void getconut() }
public class test }
此段程式列印出的結果是1 2 3 4統計的是類例項化物件的個數。
也可通過static描述的屬性來自動的給屬性賦值。
class person
public person()
public person(string name) }
Java中static關鍵字
靜態結構的生命週期要早於非靜態結構,同時 也要晚於非靜態結構 執行結果 變數變數值 c2.nation null c2.nation china public void test2 執行結果 輸出china 內容與靜態屬性大體相同 1.靜態方法內只能呼叫本類靜態屬性或靜態方法 2.靜態方法裡面是不能...
java中static關鍵字
一 可修飾成員變數和方法 靜態函式要注意的事項 1.靜態函式可呼叫類名或物件呼叫,而非靜態函式只能使用物件呼叫。2.靜態函式可直接訪問靜態成員,但不能訪問非靜態成員。原因 靜態函式可通過類名直接呼叫,這時可能還未存在非靜態成員,因為其是根據物件生成的。二 執行順序 靜態 塊的執行順序優先於非靜態 塊...
java中static關鍵字
static 方便在沒有建立物件的情況來呼叫 可以用來修飾類的成員方法 成員變數,塊 內部靜態類 靜態匯入包 1 靜態變數 被static修飾的變數叫靜態變數 或類變數 否則為例項變數,靜態變數類載入時分配一次記憶體,可以直接類名訪問 例項變數建立物件時被初始化,存在多個副本,互不影響。2 靜態方法...