java中聲明為static的方法稱為靜態方法或類方法。靜態方法可以直接調用靜態方法,訪問
靜態變量,但是不能直接訪問
實例變量和實例方法。靜態方法中不能使用
this關鍵字,因為靜態方法不屬於任何一個實例。靜態方法不能被子類的靜態方法覆蓋。
例如:
static class CompanyEmployee{
public static string GetCompanyName(string name) { ... }
public static string GetCompanyAddress(string address) { ... }
}
一般來說,類中標注了static的
函數能在類外直接引用,比如說:
String M_string1 =CompanyEmployee.GetCompanyName(M_string2)
而沒有標注static的
函數則必須聲明一個類的實體,有實體來引用。比如說:
static class CompanyEmployee{
public string GetCompanyName(string name) { ... } //沒有Staticpublic static string GetCompanyAddress(string address) { ... }
}
CompanyEmployee M_CompE = new CompanyEmployee();
String M_string1 =M_CompE.GetCompanyName(M_string2);//
靜態類
說白了,就是調用時候方便 不加static是非靜態
函數,訪問需要new出該類的對象來調用,加上static是靜態函數 可直接訪問或者通過類名訪問
你也知道,static method是類的方法,也就是在Class Loader 類加載的時候JVM會生成相應的字節碼。它的生命周期是整個application。所以會一直占用內存。如果不經常使用,沒有必要用static。
不加static的method就是對象的方法,必須用對象的實例來調用。並隨着對象的消亡而消亡。如果頻繁使用該方法,內存會不斷地開辟空間、釋放空間,性能會受影響。
如果一個方法在多處被調用,而且該方法的功能是一些Utility功能,比如格式化等,對於這類方法可以聲明為static。
如果方法和對象關系比較緊密,需要用到對象的某些屬性,就聲明為該對象的方法。