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

溫馨提示×

溫馨提示×

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

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

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

肇源县| 赤水市| 滨州市| 吕梁市| 唐山市| 山阴县| 白水县| 寿宁县| 句容市| 乌拉特前旗| 怀集县| 安达市| 定日县| 汕头市| 宁海县| 塔城市| 桐柏县| 葫芦岛市| 元朗区| 福泉市| 密山市| 长武县| 龙游县| 云浮市| 精河县| 彰武县| 宁阳县| 南充市| 横山县| 贵德县| 铁岭市| 北辰区| 乐昌市| 襄城县| 策勒县| 祥云县| 伊吾县| 来宾市| 陆河县| 乐清市| 科技|