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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Thinking in JAVA筆記——第五章 初始化與清理

2019-11-15 00:11:44
字體:
供稿:網(wǎng)友
Thinking in java筆記——第五章 初始化與清理

5.1用構(gòu)造器確保初始化

為了確保安全性,強制在使用前進行初始化

Java構(gòu)造器與類名相同,無參數(shù)構(gòu)造器又叫做默認構(gòu)造器。

5.2 方法重載

method overloading:重載,同名不同參

method overriding:重寫/覆蓋,子類覆蓋父類

5.2.1區(qū)分重載方法

獨一無二的參數(shù)類型表,否則編譯不通過!

5.2.2涉及基本類型的重載

如果參數(shù)類型是int,short,byte,long等,常數(shù)自動定位到int而不會執(zhí)行short,byte

因為默認常數(shù)就是int型,如果沒有int,則會依次向上轉(zhuǎn)型到long,float,double

注意:向上轉(zhuǎn)型不會丟信息,可以自動轉(zhuǎn)型

   向下轉(zhuǎn)型會丟失信息,必須強制類型轉(zhuǎn)換

5.2.3以返回值區(qū)分重載方法

不允許。因為可能一個int型方法f()也可以直接調(diào)用而不做任何事情

5.3默認構(gòu)造器

如果不寫構(gòu)造器,編譯器會寫一個無參數(shù)構(gòu)造器,申請內(nèi)存空間

5.4this關(guān)鍵字

發(fā)送消息給對象:編譯器“偷偷”把調(diào)用方法的對象的引用最為參數(shù)傳遞給方法,所以方法知道是哪個對象在調(diào)用它,這個對象的屬性值是多少。要向在方法內(nèi)部獲得當(dāng)前對象的引用,java提供關(guān)鍵字this。this只能在方法內(nèi)部使用,表示對調(diào)用方法的哪個對象的引用。如果方法調(diào)用同一個類的另一個方法,可以省略this(也推薦省略)。

用到this:方法返回當(dāng)前對象,將當(dāng)前對象傳遞給其他方法

5.4.1 在構(gòu)造器中調(diào)用構(gòu)造器

this(***)的方式:將產(chǎn)生對符合次參數(shù)列表的某個構(gòu)造器的明確調(diào)用。必須位于構(gòu)造器首部且只能用一次!

5.4.2static方法的含義

static方法就是沒有this的方法,有全局函數(shù)的語義。

5.5清理:終結(jié)處理finalization和垃圾回收

允許java類定義一個finalize()的方法,在垃圾回收執(zhí)行前調(diào)用,處理一些回收工作。

如果處理垃圾回收器干不了的與內(nèi)存回收無關(guān)的清理工作,則必須手動定義和調(diào)用其它普通的java方法。

5.5.1 finalize()的用途

垃圾回收及其相關(guān)行為finalize只與內(nèi)存回收有關(guān),finalize:通過創(chuàng)建對象的方式以外的方式為對象分配了內(nèi)存。

"本地方法":調(diào)用非java代碼,需要finalize中的本地方法調(diào)用free

5.5.2你必須實施清理

java不允許局部對象,所以沒有析構(gòu)函數(shù),如果需要手動清理工作,則需調(diào)用某個java方法。

垃圾回收只有在jvm內(nèi)存耗盡時才會執(zhí)行,否則在程序結(jié)束時將內(nèi)存直接交回操作系統(tǒng)

5.5.3終結(jié)條件

finalize()很難用到,但有一個有趣的用法叫做終結(jié)條件驗證???

對象被清理時必須處于某種狀態(tài),否則即使引用丟失,也不能被回收,finalize可以捕獲這種缺陷并進行異常處理!

5.5.4 垃圾回收器如何工作

java的垃圾回收器可以提高對象的創(chuàng)建速度???

java堆分配的速度,甚至可以和其它語言堆棧分配的速度媲美!

java的“堆指針”在分配一個對象后移動到尚未分配的區(qū)域

當(dāng)內(nèi)存耗盡,垃圾回收器介入,回收空間并使堆中的對象緊密排列,避免頁面錯誤。

垃圾回收器原理:自適應(yīng)的,分代的,停止-復(fù)制、標(biāo)記-清掃

5.6成員初始化

保證所有變量在使用前都能得到恰當(dāng)?shù)某跏蓟?/p>

5.6.1指定初始化

在定義類成員變量的地方賦值,每個對象都會具有相同的初始值

5.7構(gòu)造器初始化

5.7.1初始化順序:定義的順序,構(gòu)造器調(diào)用之前其實已經(jīng)完成自動初始化

5.7.2 靜態(tài)數(shù)據(jù)初始化

如果沒有初始化,則會初始化為標(biāo)準(zhǔn)值或null

同樣可以在定義處初始化

靜態(tài)對象先于非靜態(tài)對象初始化,且只初始化一次!P95

5.7.3顯示的靜態(tài)初始化

static{

***

}

5.7.4非靜態(tài)實例初始化

也可以{}定義初始化語句,支持匿名內(nèi)部類

5.8數(shù)組初始化

數(shù)組是相同類型封裝到一起的對象序列或基本類型序列。

編譯器不允許指定數(shù)組的大小(因為沒有為數(shù)組對象分配空間,必須初始化)

內(nèi)容簡單p100-p101

5.8.1可變參數(shù)列表

實質(zhì)上一個隱式的數(shù)組 f(Objcet... args)

使重載方法識別變得復(fù)雜

5.9枚舉類型


上一篇:Spring(3.2.3)

下一篇:Spring(3.2.3)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 彩票| 栖霞市| 永德县| 云霄县| 罗城| 舟曲县| 抚顺市| 青海省| 阿鲁科尔沁旗| 台山市| 房产| 馆陶县| 兴化市| 济宁市| 二连浩特市| 大名县| 广汉市| 正阳县| 德化县| 称多县| 楚雄市| 韶关市| 繁峙县| 宣汉县| 徐州市| 阆中市| 贞丰县| 云龙县| 普定县| 广州市| 葫芦岛市| 泾源县| 桂平市| 连南| 通河县| 西盟| 金华市| 山西省| 平舆县| 府谷县| 伊宁市|