亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java訪問類變量

發布時間:2020-08-07 22:14:08 來源:ITPUB博客 閱讀:154 作者:山有木xi 欄目:編程語言

很多語言都不允許通過對象訪問類變量,對象只能訪問實例變量,為什么Java可以?

public class NullAS{
private static void a(){
   System.out.println("hello word");
   
   }
   
   public static void main(String[] args)
   
   {
   
   NullAS N = null;
   
   N.a();
   
   }
   
}

這段代碼最終的輸出結果是:

hello Word

有些人可能會有疑問,使用null對象調用所屬類的靜態方法,沒有報錯,還可以正常輸出

這其中就涉及到了Java的類,類成員和static

類成員包括類變量,類方法等

讓我們來看看類變量的定義:

“類變量屬于整個整個類,當系統第一次準備使用該類時,系統會為該類變量分配內存空間,類變量開始生效,直到該類被卸載,該類的類變量所占用的內存才被系統的垃圾回收機制回首。類變量生存范圍幾乎等同于該類的生存范圍。當類初始化完成后,類變量也初始化完成”

當我們看一下上面代碼的分配內存情況可知

當系統創建該類的對象時,系統不會再為類變量分配內存,也不會再次對壘變量進行初始化,也就是說,對象根本不擁有對應類的類變量。通過對象訪問類變量只是一種假象。當通過對象來訪問類變量時,系統會在底層轉換為該類來訪問類變量。

由于對象實際上并不持有類變量,類變量時由該類持有的,同一個類的所有對象訪問類變量時,實際上訪問的都是該類的類變量。從程序運行表面來看,即可看到同一類的所有勢力的類變量共享同一塊內存區。

類方法也是類成員的一種,與類變量相似。

當使用實例來訪問類成員時,實際上依然是委托給該類來訪問類成員,因此,即使某個實例為null,它也可以訪問它所屬類的類成員。

當然,如果一個null對象訪問實例成員,那可是會報NullPointerException異常的

類初始模塊也是類成員的一種,類初始化塊用于執行類初始化動作,在類的初始化階段,系統會調用該類的類初始化塊來對類進行初始化。一旦該類初始化結束后,類初始化塊講永遠不會獲得執行的機會。

對于static而已,類成員不能訪問實例成員。因為類成員是屬于類的,類成員的作用域比實例成員的作用域更大,完全可能出現類成員以及初始化完成,但實例成員還不曾初始化的情況,如果允許成員訪問實例成員將會引發大量錯誤

所以,實際上Java和很多語言一樣,對象只能訪問實例變量,類變量通過類來訪問,只是它給使用者造成了一種假象

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

顺平县| 墨竹工卡县| 海门市| 玉山县| 正蓝旗| 牡丹江市| 田阳县| 靖州| 涞水县| 黄浦区| 平阳县| 怀远县| 长岛县| 开封市| 榆树市| 洪洞县| 金塔县| 凤冈县| 象山县| 望都县| 横山县| 邓州市| 聂拉木县| 仁化县| 稷山县| 凤庆县| 双城市| 汉源县| 铁力市| 南昌县| 边坝县| 平陆县| 涟水县| 安福县| 惠东县| 大英县| 武邑县| 固阳县| 巴里| 石屏县| 东乌|