1.實例方法/動態(tài)方法
a).標識符:-
b).調(diào)用方式:(實例對象 函數(shù))
c).實例方法在堆棧上。
2.靜態(tài)方法/類方法
a).標識符:+
b).調(diào)用方式:(類 函數(shù))
c).靜態(tài)方法在堆上分配內(nèi)存。
3.靜態(tài)方法和實例方法的區(qū)分
a).靜態(tài)方法常駐內(nèi)存,實例方法不是,所以靜態(tài)方法效率高但占內(nèi)存。事實上,方法都是一樣的,在加載時機和占用內(nèi)存上,靜態(tài)方法和實例方法是一樣的,在類型第一次被使用時加載。調(diào)用的速度基本上沒有差別。
b).靜態(tài)方法在堆上分配內(nèi)存,實例方法在堆棧上。事實上所有的方法都不可能在堆或者堆棧上分配內(nèi)存,方法作為代碼是被加載到特殊的代碼內(nèi)存區(qū)域,這個區(qū)域是不可寫的。
c).實例方法需要先創(chuàng)建實例才可以調(diào)用,比較麻煩,靜態(tài)方法不用,比較簡單。
d).靜態(tài)方法是靜態(tài)綁定到子類,不是被繼承。
e).一般使用頻繁的方法用靜態(tài)方法,用的少的方法用動態(tài)的。靜態(tài)的速度快,占內(nèi)存。動態(tài)的速度相對慢些,但調(diào)用完后,立即釋放類,可以節(jié)省內(nèi)存,可以根據(jù)自己的需要選擇是用動態(tài)方法還是靜態(tài)方法。
f).靜態(tài)方法修改的是類的狀態(tài),而對象修改的是各個對象的狀態(tài)。
新聞熱點
疑難解答