国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java中static方法的使用問題

2019-11-06 06:57:19
字體:
供稿:網(wǎng)友

遇到一個問題:

這里寫圖片描述

如圖所示,在改行中IDE給出warning:

The static method PRint() from the type demo should be accessed in a static way

有三種解決方案:

把text該為demo;把print()方法中的static去掉;把text去掉,直接調(diào)用print()方法;

簡單來說:

這個是警告,不是錯誤,不影響使用print()方法是static靜態(tài)方法,直接使用”類.方法”調(diào)用,因為靜態(tài)方法在對象創(chuàng)建前就存在了,他的使用不依賴對象是否被創(chuàng)建.非靜態(tài)的方法用”對象.方法”的方式,因為他在對象創(chuàng)建前不存在,必須依賴對象的創(chuàng)建后,才能使用由于在本類調(diào)用,可以直接使用方法。

以下是static方法和實例方法的區(qū)別:

生命周期(Lifecycle):

靜態(tài)方法(Static Method)與靜態(tài)成員變量一樣,屬于類本身,在類裝載的時候被裝載到內(nèi)存(Memory),不自動進行銷毀,會一直存在于內(nèi)存中,直到JVM關閉。

非靜態(tài)方法(Non-Static Method)又叫實例化方法,屬于實例對象,實例化后才會分配內(nèi)存,必須通過類的實例來引用。不會常駐內(nèi)存,當實例對象被JVM 回收之后,也跟著消失。

在內(nèi)存中存儲位置

靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存,是連續(xù)的。

非靜態(tài)方法會存在于內(nèi)存的多個地方,是離散的。

效率

靜態(tài)方法的使用效率比非靜態(tài)方法的效率高。

線程安全

靜態(tài)方法是共享代碼段,靜態(tài)變量是共享數(shù)據(jù)段。既然是“共享”就有并發(fā)(Concurrence)的問題。

非靜態(tài)方法是針對確定的一個對象的,所以不會存在線程安全的問題。

使用范圍

靜態(tài)方法: ⒈ 有靜態(tài)屬性的類,一般會定義靜態(tài)方法。 ⒉ 沒有屬性的類,一般會定義靜態(tài)方法。 ⒊ 如果一個方法與他所在類的實例對象無關,那么它就應該是靜態(tài)的。靜態(tài)方法可以被繼承但是不能被覆蓋。

總計

如果靜態(tài)方法在系統(tǒng)中定義太多,會占用大量的資源,最后造成內(nèi)存溢出,所以靜態(tài)方法不能濫用。如果從線程安全、性能、兼容性上來看,選用實例化方法為宜。

一般來說, 在程序里面,一些使用頻率高的方法就用static 方法、使用頻率低的則用實例方法。


注意:

靜態(tài)方法中可以直接調(diào)用同類中的靜態(tài)成員,但不能直接調(diào)用非靜態(tài)成員。如果希望在靜態(tài)方法中調(diào)用非靜態(tài)變量,可以通過創(chuàng)建類的對象,然后通過對象來訪問非靜態(tài)變量。在普通成員方法中,則可以直接訪問同類的非靜態(tài)變量和靜態(tài)變量。靜態(tài)方法中不能直接調(diào)用非靜態(tài)方法,需要通過對象來訪問非靜態(tài)方法。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 明星| 灵川县| 延吉市| 宣武区| 鹤峰县| 岱山县| 开平市| 都昌县| 宝清县| 永兴县| 富宁县| 全椒县| 依兰县| 康定县| 佳木斯市| 平武县| 墨竹工卡县| 大同县| 平湖市| 庄浪县| 沙湾县| 白山市| 乌什县| 德州市| 武山县| 舒城县| 铜梁县| 新民市| 苗栗市| 海兴县| 澄江县| 昌都县| 湛江市| 读书| 区。| 睢宁县| 抚松县| 隆回县| 石泉县| 周口市| 贵州省|