中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Java對象怎么初始化

發布時間:2021-08-31 11:28:41 來源:億速云 閱讀:124 作者:chen 欄目:編程語言

本篇內容主要講解“Java對象怎么初始化”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java對象怎么初始化”吧!

一、什么時候需要初始化一個類

  首次創建某個對象時:

  Dogdog=newDog();

  首次訪問某個類的靜態方法或者靜態字段時:

  Dog.staticFields;

  Java解釋器就會去找類的路徑,定位已經編譯好的Dog.class文件。

二、獲得類的資源

  然后jvm就會載入Dog.class,生成一個class對象。這個時候如果有靜態的方法或者變量,靜態初始化動作都會被執行。這個時候要注意啦,靜態初始化在程序運行過程中只會在Class對象首次加載的時候運行一次。這些資源都會放在jvm的方法區。

  方法區又叫靜態區,跟堆一樣,被所有的線程共享。

  方法區中包含的都是在整個程序中永遠唯一的元素,包含所有的class和static變量。

三、初始化對象Dogdog=newDog()

  1.第一次創建Dog對象先執行上面的一二步

  2.在堆上為Dog對象分配足夠的存儲空間,所有屬性和方法都被設置成默認值(數字為0,字符為null,布爾為false,而所有引用被設置成null)

  3.執行構造函數檢查是否有父類,如果有父類會先調用父類的構造函數,這里假設Dog沒有父類,執行默認值字段的賦值即方法的初始化動作。

  4.執行構造函數。

有父類情況下的初始化

  假設:DogextendsAnimal

  1、執行第一步,找出Dog.class文件,接著在加載過程中發現他有一個基類(通過extends關鍵字),于是先執行Animal類的第一二步,加載其靜態變量和方法,加載結束之后再加載子類Dog的靜態變量和方法。

  如果Animal類還有父類就以此類推,最終的基類叫做根基類。

  注意:因為子類的static初始化可能會依賴于父類的靜態資源,所以要先加載父類的靜態資源。

  2、接著要newDog對象,先為Dog對象分配存儲空間->到Dog的構造函數->創建默認的屬性。這里其構造函數里面的第一行有個隱含的super(),即父類構造函數,所以這時會跳轉到父類Animal的構造函數。

  Java會幫我們完成構造函數的補充,Dog實際隱式的構造函數如下:

  Dog(){

  //創建默認的屬性和方法

  //調用父類的構造函數super()(可顯式寫出)

  //對默認屬性和方法分別進行賦值和初始化

  }

  3、父類Animal執行構造函數前也是分配存儲空間->到其構造函數->創建默認的屬性->發現挖槽我已經沒有父類了,這個時候就給它的默認的屬性賦值和方法的初始化。

  4、接著執行構造函數余下的部分,結束后跳轉到子類Dog的構造函數。

  5、子類Dog對默認屬性和方法分別進行賦值和初始化,接著完成構造函數接下來的部分。

到此,相信大家對“Java對象怎么初始化”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

淄博市| 军事| 翁牛特旗| 清水河县| 调兵山市| 新河县| 玉屏| 乐亭县| 普陀区| 东乡| 丁青县| 宣威市| 南平市| 梁山县| 易门县| 漳州市| 澎湖县| 湄潭县| 平乡县| 樟树市| 綦江县| 宝兴县| 伊宁县| 清水河县| 庆云县| 蚌埠市| 无为县| 北票市| 鹤岗市| 秦皇岛市| 津南区| 永靖县| 丹江口市| 马鞍山市| 昌黎县| 凌云县| 扎赉特旗| 洪雅县| 陆丰市| 卓资县| 尉氏县|