91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宜兰市| 木里| 阿瓦提县| 古蔺县| 明光市| 英超| 清新县| 喜德县| 六盘水市| 江都市| 花莲市| 周宁县| 沧源| 郎溪县| 曲松县| 肃北| 进贤县| 古丈县| 福贡县| 崇文区| 晋州市| 丹东市| 宁安市| 当涂县| 洞头县| 盖州市| 宁夏| 华安县| 江山市| 金门县| 镇沅| 余庆县| 祁门县| 广宗县| 雅江县| 宿松县| 页游| 揭阳市| 大丰市| 玛多县| 抚远县|