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。

如果方法和對象關系比較緊密,需要用到對象的某些屬性,就聲明為該對象的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM