摘要:隨著計(jì)算機(jī)革命的發(fā)展,不安全的編程方式已逐漸成為編程代價(jià)高昂的主因之一。
隨著計(jì)算機(jī)革命的發(fā)展,“不安全”的編程方式已逐漸成為編程代價(jià)高昂的主因之一。
1.用構(gòu)造器確保初始化構(gòu)造器:在創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用的特殊方法.
構(gòu)造器命名問題:1.所取得任何名字可能與類的某個(gè)成員命名沖突;2.調(diào)用構(gòu)造器是編譯器的責(zé)任,所以應(yīng)該讓編譯器知道該調(diào)用哪個(gè)方法.
構(gòu)造器命名:與類名相同,所以"每個(gè)方法首字母小寫"的編程風(fēng)格不適用于構(gòu)造器.
構(gòu)造器沒有返回值(new表達(dá)式返回了對(duì)新建對(duì)象的引用,但構(gòu)造器本省并沒有返回任何值).
2.方法重載目的:為了讓方法名相同而形式參數(shù)不同的構(gòu)造器同時(shí)存在.
方法重載是構(gòu)造器所必需的,但亦可用于其他方法.
區(qū)分:參數(shù)類型列表,參數(shù)順序(代碼難以維護(hù)),涉及基本類型的重載(易混淆),返回值(為了副作用而調(diào)用就會(huì)忽略其返回值 ×)
3.默認(rèn)構(gòu)造器如果類中沒有構(gòu)造器,編譯器會(huì)自動(dòng)創(chuàng)建一個(gè)默認(rèn)構(gòu)造器.
如果已有構(gòu)造器,則不會(huì)創(chuàng)建.
4.this關(guān)鍵字為了能用簡便,面向?qū)ο蟮恼Z法來編寫代碼,編譯器做了一些幕后工作,他把"所操作對(duì)象的引用"作為第一個(gè)參數(shù)傳給方法(注:一般是通過對(duì)象的引用來調(diào)用方法,編譯之后通過對(duì)象來調(diào)用).
只能在方法內(nèi)部使用,表示對(duì)"調(diào)用方法的那個(gè)對(duì)象"的引用.
如果在方法內(nèi)部,調(diào)用同一個(gè)類的另一個(gè)方法,則不必使用this,直接調(diào)用即可.
需要返回當(dāng)前對(duì)象的引用時(shí),return this;.
將當(dāng)前對(duì)象作為參數(shù)傳遞給其他對(duì)象.
在構(gòu)造器中調(diào)用構(gòu)造器(只能調(diào)用一個(gè),且必須將構(gòu)造器的調(diào)用至于最起始處).
static方法:沒有this的方法.
5.清理:終結(jié)處理和垃圾回收finalize().
對(duì)象可能不被垃圾回收.
垃圾回收并不等于"析構(gòu)".
垃圾回收只與內(nèi)存有關(guān).
引用計(jì)數(shù):常用開說明垃圾收集的工作方式.
復(fù)制式回收器:效率低(1,空間大;2,復(fù)制).
標(biāo)記-清掃 模式.
6.成員初始化局部變量必須進(jìn)行初始化.
類的數(shù)據(jù)成員(全局變量),基本類型會(huì)默認(rèn)有一個(gè)初始值,對(duì)象引用會(huì)獲得特殊值null.
指定初始化:定義的時(shí)候直接賦值或通過方法調(diào)用賦值.
7.構(gòu)造器初始化通過構(gòu)造器來進(jìn)行初始化(無法阻止自動(dòng)初始化的進(jìn)行,它將在構(gòu)造器調(diào)用之前發(fā)生).
變量定義的先后順序決定了初始化的順序.
靜態(tài)數(shù)據(jù)初始化:只有在第一個(gè)對(duì)象創(chuàng)建(或者第一次訪問靜態(tài)數(shù)據(jù))的時(shí)候,才會(huì)被初始化,僅執(zhí)行一次.
顯式的靜態(tài)數(shù)據(jù)初始化:靜態(tài)代碼塊.
非靜態(tài)實(shí)例初始化:普通代碼塊(匿名內(nèi)部類的chu"shi"hua).
構(gòu)造器沒有顯式地使用static,但也是靜態(tài)方法.
對(duì)象的創(chuàng)建過程
1.當(dāng)詩詞創(chuàng)建對(duì)象或者類的靜態(tài)方法/靜態(tài)域首次被訪問時(shí),Java解釋器查找類路徑,定位.class文件.
2.載入.class,有關(guān)靜態(tài)初始化的所有動(dòng)作被執(zhí)行(首次加載時(shí)進(jìn)行一次).
3.用new操作符創(chuàng)建對(duì)象,在堆上為對(duì)象分配足夠的存儲(chǔ)空間.
4.存儲(chǔ)空間清零,為對(duì)象中的全局變量賦值.
5.執(zhí)行所有出現(xiàn)于字段定義處的初始化動(dòng)作.
6.執(zhí)行構(gòu)造器.
數(shù)組:相同類型的,用一個(gè)標(biāo)識(shí)符名稱封裝到一起的一個(gè)對(duì)象序列或基本類型數(shù)據(jù)序列.通過方括號(hào)下標(biāo)操作符來定義和使用的.
編譯器不允許指定數(shù)組的大小.
初始化表達(dá)式:由一對(duì)花括號(hào)括起來的值組成.在這種情況下,存儲(chǔ)空間的分配(等價(jià)于使用new)由編譯器負(fù)責(zé).
固有成員length,只能訪問不能修改.
可變參數(shù)列表.
9.枚舉類型枚舉類型的實(shí)例是常量,按照命名慣例使用大寫字母表示(多個(gè)單詞用下劃線隔開).
為了使用enum,需要?jiǎng)?chuàng)建一個(gè)該類型的引用,并將其賦值給某個(gè)實(shí)例.
編譯器自動(dòng)添加toString(),ordinal()(聲明順序),values()(按聲明順序,產(chǎn)生由常量構(gòu)成的數(shù)組)方法.
與switch配合使用.
END
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/71527.html
摘要:點(diǎn)擊進(jìn)入我的博客初始化和清理是編程安全的兩個(gè)問題。延續(xù)了中的構(gòu)造器確保初始化,并引入了垃圾回收器管理和釋放內(nèi)存。用構(gòu)造方法確保初始化構(gòu)造方法和類名相同。用于強(qiáng)制進(jìn)行終結(jié)動(dòng)作。載入該文件,靜態(tài)數(shù)據(jù)進(jìn)行初始化,執(zhí)行靜態(tài)代碼塊。 點(diǎn)擊進(jìn)入我的博客 初始化和清理是編程安全的兩個(gè)問題。Java延續(xù)了C++中的構(gòu)造器確保初始化,并引入了垃圾回收器管理和釋放內(nèi)存。 5.1 用構(gòu)造方法確保初始化 ...
摘要:多態(tài)的作用是消除類型之間的耦合關(guān)系。編寫構(gòu)造器準(zhǔn)則用盡可能簡單的方法使對(duì)象進(jìn)入正常狀態(tài),如果可以的話,避免調(diào)用其他方法。 點(diǎn)擊進(jìn)入我的博客 在面向?qū)ο蟮某绦蛟O(shè)計(jì)語言中,多態(tài)是繼數(shù)據(jù)抽象(封裝)和繼承之后的第三種基本特征。多態(tài)通過分離做什么和怎么做,從另一角度將接口和實(shí)現(xiàn)分離開來。多態(tài)的作用是消除類型之間的耦合關(guān)系。 8.1 再論向上轉(zhuǎn)型 對(duì)象既可以作為它自己的本類使用,也可以作為它的...
摘要:注本文首發(fā)于公眾號(hào),可長按或掃描下面的小心心來訂閱關(guān)于構(gòu)造器與初始化無參構(gòu)造器默認(rèn)構(gòu)造器自己未寫編譯器幫忙自動(dòng)創(chuàng)建的若自行定義了構(gòu)造器無論參數(shù)有否,編譯器便停止默認(rèn)創(chuàng)建動(dòng)作類里的對(duì)象引用默認(rèn)初始化為,基本類型初始化為構(gòu)造器也是類的靜態(tài)方法四 showImg(https://segmentfault.com/img/remote/1460000015723687); 注: 本文首發(fā)于 ...
摘要:堆和方法區(qū)只有在程序運(yùn)行時(shí)才能確定內(nèi)存的使用情況,垃圾回收器所關(guān)注的主要就是這部分內(nèi)存。虛擬機(jī)會(huì)根據(jù)當(dāng)前系統(tǒng)的運(yùn)行情況收集性能監(jiān)控信息,動(dòng)態(tài)調(diào)整比率參數(shù)以提供最合適的停頓時(shí)間或最大的吞吐量。 Tip:內(nèi)容為對(duì)《深入理解Java虛擬機(jī)》(周志明 著)第三章內(nèi)容的總結(jié)和筆記。這是第一次拜讀時(shí)讀到的一些重點(diǎn),做個(gè)分享,也為后面再次閱讀和實(shí)踐做保障。 3.1 概述 程序計(jì)數(shù)器、虛擬機(jī)棧、本地...
摘要:復(fù)用代碼是眾多引入注目的功能之一。但要想成為極具革命性的語言,僅僅能夠復(fù)制代碼并對(duì)之加以改變是不夠的,它還必須能夠做更多的事情。 復(fù)用代碼是Java眾多引入注目的功能之一。但要想成為極具革命性的語言,僅僅能夠復(fù)制代碼并對(duì)之加以改變是不夠的,它還必須能夠做更多的事情。 1.組合語法 將對(duì)象引用置于新類中. 初始化對(duì)象引用:1.定義時(shí)初始化;2.構(gòu)造器初始化;3.使用之前(惰性初始化);...
閱讀 3060·2023-04-26 00:49
閱讀 3726·2021-09-29 09:45
閱讀 989·2019-08-29 18:47
閱讀 2748·2019-08-29 18:37
閱讀 2729·2019-08-29 16:37
閱讀 3296·2019-08-29 13:24
閱讀 1779·2019-08-27 10:56
閱讀 2350·2019-08-26 11:42