1. 程式人生 > >java函式加不加static有何不同

java函式加不加static有何不同

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。

如果方法和物件關係比較緊密,需要用到物件的某些屬性,就宣告為該物件的方法。

————希望對你的理解有所幫助————