類中靜態方法和實例方法的區別
靜態方法依賴于類,通過類.靜態方法調用;實例方法依賴于類的對象,需要創建對象后,對象.實例方法使用
2、使用上實例方法內部不能定義靜態變量,會出現編譯錯誤;實例方法可以直接調用靜態方法;靜態方法內部可以定義和使用實例變量,靜態方法無法直接調用實例方法(因靜態方法加載時類還沒有實例化,實例方法依賴于類的對象)
3、靜態方法和實例方法的內存分配問題一般認為靜態方法常駐內存,實例方法只有在使用時才分配內存。但事實上,是一樣的,都是在類被加載時常駐內存。static方法和non-static方法在創建實例對象時,屬性的值對各個對象各不相同(每個實例對象的所有字段在內存中有一個拷貝,用于區分操作哪個對象的字段),new一個實例時,會把實例屬性放在GCHeap里面,同時new的對象放在堆棧上,堆棧指針指向剛才拷貝的的內存地址;而靜態方法中的靜態字段只有一份;對于static和non-static方法代碼都是一樣的,所以只需要一份代碼,占用一份內存空間。調用速度上因實例方法需要實例化分配內存,靜態方法則不用,故靜態方法會快一點,但也可忽略不計
4、區分靜態方法和實例方法的原因早期結構化編程幾乎所有方法都是靜態方法,引入實例化方法的概念是在面向對象概念出現以后,區分靜態方法和實例方法不能單單從性能上理解。創建c++、java、c#這樣面向對象語言的大師引入實例化方法一定不是要解決什么性能、內存的問題,而是為了讓開發更加模式化、面向對象化。這樣說的話,靜態方法和實例化方式的區分是為了解決模式的問題
5、適用場景靜態方法:一個方法與類的對象無關,如工具類等
實例方法:一個方法依賴于類的對象;多線程場景下,如果靜態方法中含有靜態變量,如果對靜態變量進行更改操作易造成線程安全問題
6、靜態方法與單例模式如果一個方法與對象的實例無關用靜態方法,反之采用實例方法,但如果方法和對象的實例有關,又想維護一份實例時,需要用單例模式。如系統運行時,需要加載一些的配置和屬性,是公共的,需要在整個生命周期存在,只需要一份就可以,但此時這些配置和屬性又是通過面向對象的編碼方式得到的,雖然用靜態方法也能解決,但最好的方式是采用單例模式
java里實例方法是什么意思?
Java方法是語句的集合,它們在一起執行一個功能。
方法是解決一類問題的步驟的有序組合。
方法包含于類或對象中。
方法在程序中被創建,在其他地方被引用。
類方法 和實例方法區別
java里實例方法是什么意思
本文發布于:2023-02-28 19:38:00,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167762591867082.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:實例方法(實例方法和類方法的區別).doc
本文 PDF 下載地址:實例方法(實例方法和類方法的區別).pdf
| 留言與評論(共有 0 條評論) |