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。若是方法和對象關係比較緊密,須要用到對象的某些屬性,就聲明爲該對象的方法。