Java基礎(chǔ)知識(shí)整理_第1頁
Java基礎(chǔ)知識(shí)整理_第2頁
Java基礎(chǔ)知識(shí)整理_第3頁
Java基礎(chǔ)知識(shí)整理_第4頁
Java基礎(chǔ)知識(shí)整理_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Java知識(shí)點(diǎn)總結(jié)1 環(huán)境搭建與開發(fā)1.1 環(huán)境變量JAVA_HOME:Java的安裝目錄;CLASSPATH:指定一個(gè)路徑列表,用于搜索Java在編譯或運(yùn)行時(shí)需要用到的類(.class文件);PATH:指定一個(gè)路徑列表,用于搜索可執(zhí)行文件。1.2 Java SDK應(yīng)用編譯:Javac 類名.class;運(yùn)行:Java 類名;打包:jar cf test.jar test (把當(dāng)前目錄下的test目錄下的所有文件壓縮到test.jar文件中)。2 變量與常量Java中的常量用保留字final來實(shí)現(xiàn)。變量:局部變量(local variable)、實(shí)例變量(instance variable)、

2、類變量(class variable);任何變量在使用前都必須初始化,局部變量必須顯示初始化,實(shí)例變量在類的構(gòu)造方法被調(diào)用時(shí)初始化(分配默認(rèn)值),類變量在類被加載時(shí)被初始化。3 標(biāo)識(shí)符3.1 命名在Java語言中,標(biāo)識(shí)符的定義規(guī)則是以字母、下劃線、美元符開始,后面可以跟字母、下劃線、美元符、數(shù)字。因?yàn)镴ava語言使用Unicode字符集,所以對(duì)字母不僅限于英文,還可以是日文、韓文、阿拉伯文、中文等。區(qū)分大小寫,沒有字?jǐn)?shù)限制。3.2 關(guān)鍵字3.2.1 staticstatic方法中不能有this和super關(guān)鍵字(static方法不是“面向?qū)ο蟆钡?,而是“面向類”的)。static方法中只能訪問

3、所屬類的static方法和變量。static數(shù)據(jù)成員的初始化:在第一次生成該類的對(duì)象時(shí)初始化。3.2.2 final1) final數(shù)據(jù)a) static finall 更加典型的定義方式是public static final;l 占用一段不能改變的存儲(chǔ)空間;l 代表編譯時(shí)常量,即在編譯器就能知道其值(如果只聲明為final或者static,是在運(yùn)行時(shí)才知道值)。l 全部用大寫字母命名,單詞之間用下劃線隔開。b) final數(shù)據(jù)與final引用l final數(shù)據(jù)的值不能被改變;l final引用是指無法將其指向一個(gè)新的對(duì)象(數(shù)組也是一種引用),對(duì)象本身的值是可以改變的。c) 空白final(

4、聲明為final卻未賦初始值)l 可以做到根據(jù)對(duì)象有所不同,又保持恒定不變的特性;l 必須保證使用前已經(jīng)初始化:在定義處賦值或者在構(gòu)造器中賦值。2) final參數(shù)l 無法在方法中更改引用所指向的對(duì)象。3) final方法l 禁止覆蓋,防止任何繼承類修改它的定義;l private方法都是final的,因此private方法無法覆蓋。4) final類l 不允許繼承該類;l final類中的所有方法都隱式指定為final的。3.2.3 transient主要作用:防止對(duì)象的敏感信息被序列化,保證安全性。transient用于在一個(gè)特定對(duì)象的一個(gè)域上關(guān)閉序列化,當(dāng)該對(duì)象被序列化時(shí),transie

5、nt型變量不包含在序列化表示中。原因:對(duì)于某些敏感信息(如密碼),一經(jīng)序列化處理,便可以通過讀取文件或者攔截網(wǎng)絡(luò)傳輸?shù)姆绞皆L問到。4 運(yùn)算符4.1 算術(shù)運(yùn)算符4.1.1 “/”運(yùn)算符如果被除數(shù)和除數(shù)都是整數(shù),那么商也是整數(shù);如果被除數(shù)和除數(shù)中有一個(gè)是浮點(diǎn)數(shù),商是浮點(diǎn)數(shù);當(dāng)被除數(shù)是整數(shù)類型時(shí),零不能作為除數(shù)(運(yùn)行時(shí)報(bào)錯(cuò));當(dāng)被除數(shù)是浮點(diǎn)型時(shí),除數(shù)為0,結(jié)果為Infinity。4.1.2 “%”運(yùn)算符既可以對(duì)整型數(shù)據(jù)取模,也可以對(duì)實(shí)型數(shù)據(jù)取模;任何整數(shù)都不能對(duì)0取模;不管是整型還是實(shí)型的取模運(yùn)算,余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同(若a%b,結(jié)果的符號(hào)與a相同)。4.2 位運(yùn)算符:帶符號(hào)右移(最高位為0

6、則補(bǔ)0,為1則補(bǔ)1):無符號(hào)右移(補(bǔ)0)如果對(duì)char、byte、short類型的數(shù)據(jù)進(jìn)行移位處理,那么在移位進(jìn)行之前,它們會(huì)被轉(zhuǎn)換為int類型,并且得到的結(jié)果也是一個(gè)int類型的值。對(duì)char、byte、short進(jìn)行運(yùn)算時(shí),都會(huì)得到一個(gè)int結(jié)果,必須將其顯示地類型轉(zhuǎn)換回原來的類型,在窄化轉(zhuǎn)換的過程中可能會(huì)造成信息的丟失。4.3 賦值運(yùn)算符如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,則需要進(jìn)行類型轉(zhuǎn)換,即“向左看齊”;如果這種轉(zhuǎn)換是由小向大的轉(zhuǎn)換,系統(tǒng)將自動(dòng)進(jìn)行,如果是由大向小的轉(zhuǎn)換,則需強(qiáng)制類型轉(zhuǎn)換。5 數(shù)據(jù)類型new將對(duì)象存儲(chǔ)在堆里,故用new來創(chuàng)建一個(gè)小的對(duì)象,特別是小的簡單的變量,往往不是

7、很有效,因此,java不用new來創(chuàng)建對(duì)象,而是創(chuàng)建一個(gè)并非是引用的自動(dòng)變量,這個(gè)變量直接存儲(chǔ)值,并置于堆棧中,因此更加高效。基本數(shù)據(jù)類型整型:byte, short, int, long實(shí)型:float, double字符型:char布爾型:boolean復(fù)合數(shù)據(jù)類型數(shù)組類接口5.1 整型變量數(shù)據(jù)類型所占位數(shù)值范圍byte8位-128127short16位-3276832767int32位-231 231-1long64位-263 -263-1在進(jìn)行帶有byte、short、int三種類型并存的表達(dá)式運(yùn)算時(shí),系統(tǒng)都會(huì)將short和byte都先提升為int類型。5.2 浮點(diǎn)型變量l 單精度浮點(diǎn)

8、型float:32位; l 雙精度浮點(diǎn)型double:64位。5.3 字符型數(shù)據(jù)數(shù)據(jù)類型所占位數(shù)值范圍char16位065536l 單引號(hào)括起來的單個(gè)字符;l 反斜杠()開頭的字符;l u后接4位十六進(jìn)制數(shù)字。6 數(shù)組6.1 初始化Java在聲明數(shù)組時(shí)并不為其分配存儲(chǔ)空間,因此在聲明數(shù)組時(shí)不能指定數(shù)組的長度。7 字符串String對(duì)象是不可變的,String類中每一個(gè)看起來會(huì)修改String值的方法,實(shí)際上都是創(chuàng)建了一個(gè)全新的String對(duì)象,以包含修改后的字符串內(nèi)容,而最初的String對(duì)象則絲毫未動(dòng)。當(dāng)把String對(duì)象作為方法的參數(shù)時(shí),實(shí)際上是復(fù)制了一份引用。String:字符串常量St

9、ringBuilder:字符串變量(非線程安全)StringBuffer:字符串變量(線程安全)7.1 StringString str = new String(“good”); 在內(nèi)存的堆中創(chuàng)建一個(gè)”good”字符串對(duì)象String str = “good”; 在String pool中創(chuàng)建”good”字符串對(duì)象7.2 StringBufferString與StringBuffer有什么區(qū)別?String的長度是不可變的,String對(duì)象中存放的字符串對(duì)象不可修改;StringBuffer的長度是可變的。因此如果經(jīng)常需要增加、刪除或者修改字符串中的某些字符,用String就不方便,為了提高

10、效率節(jié)省空間,應(yīng)該使用StringBuffer。7.3 StringBuilder8 流程控制8.1 case & switch跟在case后面的值必須是常量,不能是變量或表達(dá)式;switch(expr)中,expr是一個(gè)整數(shù)表達(dá)式,因此傳遞給switch和case語句的參數(shù)應(yīng)該是char、short、int。9 異常處理ThrowableError一般與硬件有關(guān),由系統(tǒng)直接處理,不需程序員處理ExceptionRuntimeException(運(yùn)行時(shí)異常)IOException 其它異常,必須catch9.1 常見的運(yùn)行時(shí)異常ArrayIndexOutofBoundsException數(shù)組下

11、標(biāo)越界IndexOutofBoundsException索引下標(biāo)越界ClassCastException強(qiáng)制類型轉(zhuǎn)換異常NullPointerException空指針異常NumberFormatException字符串非法轉(zhuǎn)換數(shù)字格式9.2 常見的檢查時(shí)異常ClassNotFoundExceptiom找不到相關(guān)類IllegalAccessException訪問類被拒絕InterruptedException線程被另一個(gè)線程中斷NoSuchFieldException請(qǐng)求的域不存在NoSuchMethodException請(qǐng)求的方法不存在拋出異常的時(shí)候,異常處理程序會(huì)按照代碼的書寫順序找出“最近

12、”的處理程序,找到匹配的處理程序之后,它就認(rèn)為異常將得到處理,然后就不再繼續(xù)查找。查找的時(shí)候并不要求拋出的異常和處理程序聲明的異常完全匹配,派生類的對(duì)象也可以匹配其基類的處理程序。10 內(nèi)存管理10.1 垃圾回收10.1.1 垃圾回收的優(yōu)點(diǎn)java的垃圾回收機(jī)制使得程序員不再需要顯示地分配和釋放內(nèi)存,避免了很多潛在的問題,如“內(nèi)存泄露”。10.1.2 何時(shí)垃圾回收為了提高系統(tǒng)效率,垃圾回收器通常只在滿足以下兩個(gè)條件時(shí)才運(yùn)行:l 有對(duì)象可回收;l 系統(tǒng)需要回收。垃圾回收線程是一種低優(yōu)先級(jí)的線程,只在系統(tǒng)空閑時(shí)才有機(jī)會(huì)運(yùn)行,但在系統(tǒng)內(nèi)存量過低的時(shí)候,可能會(huì)突發(fā)地執(zhí)行來挽救內(nèi)存資源。垃圾回收器不可以

13、被強(qiáng)制執(zhí)行,但程序員可以通過調(diào)用System.gc()方法來建議執(zhí)行垃圾回收器。10.1.3 垃圾回收算法根集:正在執(zhí)行的Java程序可以訪問的引用變量的集合;大多數(shù)垃圾回收算法都使用了根集(root set)的概念。垃圾收集首先需要從根開始確定哪些是可達(dá)的和哪些是不可達(dá)的;從根集可達(dá)的對(duì)象是活動(dòng)對(duì)象,不能作為垃圾被回收;根集通過任意路徑都不可達(dá)的對(duì)象滿足被回收的條件。JVM的垃圾回收機(jī)制有多個(gè)算法,其中最簡單的是引用計(jì)數(shù)法,是用來判斷對(duì)象是否已經(jīng)被拋棄的,其它算法都是用來確定何時(shí)回收以及如何回收。引用計(jì)數(shù)法沒有使用根集:當(dāng)發(fā)現(xiàn)某對(duì)象的引用計(jì)數(shù)為0時(shí),就將該對(duì)象列入待回收列表。10.1.4 其

14、它l 垃圾回收只與內(nèi)存有關(guān);l 對(duì)象可能不被垃圾回收。如果JVM沒有面臨內(nèi)存即將耗盡的情形,是不會(huì)浪費(fèi)時(shí)間去執(zhí)行垃圾回收的,即無論是垃圾回收還是finalize都不保證一定會(huì)發(fā)生,所以不能過分依賴它們。10.2 finalize()方法用途:每個(gè)對(duì)象都有一個(gè)繼承自O(shè)bject類的finalize()方法,用于回收除內(nèi)存之外的系統(tǒng)資源,如文件和網(wǎng)絡(luò)連接等。何時(shí)被調(diào)用:一旦垃圾回收器準(zhǔn)備好釋放某個(gè)對(duì)象占用的存儲(chǔ)空間,則將首先調(diào)用其的finalize()方法,并且在下一次垃圾回收動(dòng)作發(fā)生時(shí),才會(huì)真正回收對(duì)象占用的內(nèi)存。finalize()方法可以被明確地調(diào)用,但它不能進(jìn)行垃圾回收;如果某對(duì)象的fin

15、alize()方法在執(zhí)行時(shí)出現(xiàn)異常,該對(duì)象仍然可以被垃圾回收器回收。11 Java I/O系統(tǒng)11.1 Java NIO(1) 為什么使用NIO?JDK1.4的java.nio.*包中引入了新的Java I/O類庫,其目的在于提高速度;速度的提高來自于所使用的數(shù)據(jù)結(jié)構(gòu)更接近操作系統(tǒng)執(zhí)行I/O的方式:通道和緩沖器。JDK1.4以前,一直使用流的方式完成I/O,所有的I/O被視為單個(gè)字節(jié)的移動(dòng),通過Stream對(duì)象一次移動(dòng)一個(gè)字節(jié);NIO與原來的I/O有相同的作用和目的,但是它使用的是塊I/O,因此效率更高。(2) 概述l 什么是通道?通道是對(duì)原I/O包中流的模擬,到任何目的地(或者來自任何地方)

16、的數(shù)據(jù)都必須通過一個(gè)Channel對(duì)象。通道與流的不同之處在于通道是雙向的,而流只在一個(gè)方向上流動(dòng),通道可以讀、寫或者同時(shí)讀寫。l 什么是緩沖區(qū)?緩沖區(qū)實(shí)質(zhì)上是一個(gè)容器對(duì)象;發(fā)給一個(gè)通道的所有數(shù)據(jù)必須先放到緩沖區(qū)中,同樣地,從一個(gè)通道中讀取的所有數(shù)據(jù)也必須先放到緩沖區(qū)中。(3) 非阻塞技術(shù)關(guān)鍵技術(shù):觀察者模式。監(jiān)控I/O端口,如果有內(nèi)容進(jìn)來,會(huì)自動(dòng)通知,這樣就不必開啟多個(gè)線程死等,實(shí)現(xiàn)了流暢的I/O,不阻塞了。11.2 內(nèi)存映射文件(RandomAccessFile)內(nèi)存映射文件允許我們創(chuàng)建和修改那些因?yàn)樘蠖荒芊湃雰?nèi)存的文件。有了內(nèi)存映射文件,我們就可以假定整個(gè)文件都放在內(nèi)存中,而且可以把

17、它當(dāng)做非常大的數(shù)組來訪問。11.3 對(duì)象序列化Java的對(duì)象序列化將那些實(shí)現(xiàn)了Serializable接口的對(duì)象轉(zhuǎn)換成一個(gè)字節(jié)序列,并能夠在以后將這個(gè)字節(jié)序列完全恢復(fù)為原來的對(duì)象。這一過程甚至可以通過網(wǎng)絡(luò)進(jìn)行,這意味著序列化機(jī)制能夠自動(dòng)彌補(bǔ)不同的操作系統(tǒng)之間的差異?!俺志没币馕吨粋€(gè)對(duì)象的生存周期并不取決于程序是否正在執(zhí)行,它可以生存于程序的調(diào)用之間。通過將一個(gè)序列化對(duì)象寫入磁盤,然后在重新調(diào)用程序時(shí)恢復(fù)該對(duì)象,就能夠?qū)崿F(xiàn)持久化的效果。對(duì)象序列化的概念主要是為了支持兩種特性:一是Java的遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RMI),二是Java Bean。l

18、序列化的意義如下:1) 對(duì)象序列化可以實(shí)現(xiàn)分布式對(duì)象。主要應(yīng)用例如:RMI要利用對(duì)象序列化運(yùn)行遠(yuǎn)程主機(jī)上的服務(wù),就像在本地機(jī)上運(yùn)行對(duì)象時(shí)一樣;2) 另外,Java序列化不僅保存一個(gè)對(duì)象的數(shù)據(jù),而且遞歸保存對(duì)象中引用的每個(gè)對(duì)象的數(shù)據(jù),可以將整個(gè)對(duì)象層次寫入字節(jié)流中。l 序列化的步驟:1) 創(chuàng)建OutputStream對(duì)象,然后將其封裝在一個(gè)ObjectOutputStream對(duì)象內(nèi);2) 調(diào)用writeObject()即可將對(duì)象序列化,并將其發(fā)送給OutputStream。l 反序列化步驟:1) 將一個(gè)InputStream對(duì)象封裝在一個(gè)ObjectInputStream對(duì)象內(nèi),然后調(diào)用read

19、Object();2) 將獲得的Object引用向下轉(zhuǎn)型。12 面向?qū)ο?2.1 多態(tài)方法的多態(tài)性:重載&重寫。12.1.1 重載l 一個(gè)類中;l 多個(gè)相同的方法名;l 參數(shù)的個(gè)數(shù)、順序、類型不相同。12.1.2 重寫l 繼承類中;l 子類繼承父類的方法;l 子類可以覆蓋父類的方法,但是不能降低方法的訪問權(quán)限。l 不能比父類方法拋出更多的異常(只能比父類拋出的異常少,或者是其子類)。12.2 向上轉(zhuǎn)型把對(duì)某個(gè)對(duì)象的引用視為對(duì)其基類的引用。向上轉(zhuǎn)型中,調(diào)用的是子類的方法而不是基類的方法。12.3 動(dòng)態(tài)綁定java虛擬機(jī)調(diào)用一個(gè)類方法時(shí),它會(huì)基于對(duì)象應(yīng)用的類型(通常在編譯時(shí)可知)來選擇所調(diào)用的方法

20、。相反,當(dāng)虛擬機(jī)調(diào)用一個(gè)實(shí)例方法時(shí),它會(huì)基于對(duì)象實(shí)際的類型(只能在運(yùn)行時(shí)得知)來選擇所調(diào)用的方法,這就是動(dòng)態(tài)綁定。在處理java類中的成員變量時(shí),并不是采用運(yùn)行時(shí)綁定,而是一般意義上得靜態(tài)綁定,所以在向上轉(zhuǎn)型的情況下,對(duì)象的方法是子類的方法,但是屬性是基類的屬性。如果試圖調(diào)用子類的成員變量,可以將其封裝成getter的形式。12.4 Java識(shí)別對(duì)象和類信息l RTTI (Run-time Type Identification),運(yùn)行時(shí)類型識(shí)別l 反射:允許在運(yùn)行時(shí)發(fā)現(xiàn)和使用類型信息12.4.1 運(yùn)行時(shí)類型識(shí)別在java中,所有的轉(zhuǎn)型都會(huì)得到檢查。即使只是進(jìn)行一次普通的括弧形式的類型轉(zhuǎn)換,在

21、進(jìn)入運(yùn)行期時(shí)仍然會(huì)對(duì)其進(jìn)行檢查,以確保它是我們所希望的類型,如果不是,就會(huì)返回一個(gè)ClassCastException,這種在運(yùn)行期間對(duì)類型進(jìn)行檢查的行為稱作“運(yùn)行時(shí)類型識(shí)別”(RTTI)。l 類型信息的表示:Class對(duì)象每個(gè)類都有一個(gè)Class對(duì)象(同名的.class文件)。l 生成Class對(duì)象:類加載器類加載器的工作時(shí)機(jī):當(dāng)程序第一次創(chuàng)建對(duì)某個(gè)類的靜態(tài)成員的引用時(shí),就會(huì)將該類動(dòng)態(tài)加載到JVM中(構(gòu)造方法也被當(dāng)作類的靜態(tài)方法)。l 為了使用某個(gè)類需要做的準(zhǔn)備工作1) 加載由類加載器執(zhí)行。檢查該類的Class對(duì)象是否已經(jīng)加載,如果尚未加載,則在classpath所指定的路徑下查找.clas

22、s文件(字節(jié)碼);一旦某個(gè)類的Class對(duì)象載入內(nèi)存,它就用來創(chuàng)建該類的所有對(duì)象。2) 鏈接執(zhí)行驗(yàn)證字節(jié)碼、為靜態(tài)域分配存儲(chǔ)空間等操作。3) 初始化首次引用類的靜態(tài)方法或非常數(shù)靜態(tài)域時(shí),對(duì)其初始化。l 獲得Class對(duì)象的引用的方法1) Class.forName(類的全限定名)如果該類還沒有被加載,則加載它,并自動(dòng)初始化。2) 類名.class不會(huì)自動(dòng)初始化3) 對(duì)象.getClass()l 查詢對(duì)象的類型信息1) 對(duì)象 instanceof 類名2) 類名.isInstance(對(duì)象)用equals和=來比較Class對(duì)象時(shí),不會(huì)考慮繼承;而用instanceof和isInstance()

23、判斷時(shí),會(huì)考慮類型信息(即是否從屬于該類,是該類還是該類的派生類)。12.4.2 反射l RTTI和反射的區(qū)別:RTTI:編譯器在編譯時(shí)打開和檢查.class文件反射:.class文件在編譯時(shí)是不可獲取的,在運(yùn)行時(shí)打開和檢查.class文件(從本地機(jī)器上獲得或者從網(wǎng)絡(luò)獲得)。12.5 繼承繼承的幾個(gè)原則:l 子類方法的訪問權(quán)限不能弱于基類方法的訪問權(quán)限;l 子類方法拋出的異常不能大于基類方法拋出的異常;l private的字段和方法不能被覆蓋。12.6 抽象類與抽象方法抽象方法是否可以同時(shí)為static?是否可以同時(shí)為native?是否可以同時(shí)為synchronized?答:因?yàn)楦割惖膕tat

24、ic方法只能被子類的static方法覆蓋,不能表現(xiàn)出多態(tài),因?yàn)槎鄳B(tài)是通過引用來實(shí)現(xiàn)的,所以abstract和static不可以同時(shí)使用;native方法是通過引入c/c+或其它本地語言來實(shí)現(xiàn)的,但在抽象方法中無法引入不同的實(shí)現(xiàn),所以也不能同時(shí)使用;因?yàn)閟ynchronzied同步的是同一對(duì)象,而不是不同實(shí)現(xiàn)的不同對(duì)象,所以synchronized和abstract也不能同時(shí)使用。l 當(dāng)一個(gè)類中包含有抽象方法時(shí),該類必須被限定為抽象類;l 繼承抽象類的子類必須實(shí)現(xiàn)基類中的所有抽象方法,否則便也是抽象類。12.7 接口接口的特征:l 接口沒有構(gòu)造方法;l 接口中聲明的變量均為final、stati

25、c、public的;l 接口中定義的方法均為abstract和public的;l 接口中的數(shù)據(jù)成員必須初始化,而且均為常量。l 接口本身具有public或者包訪問權(quán)限兩種可視性;l 接口中不提供任何方法體;l 接口內(nèi)所有的域都是static和final的;l 接口內(nèi)所有元素的可視性都是public。12.8 類的加載及初始化類的加載及初始化過程為:l 加載必要的類:先加載超類再加載子類,在加載過程中初始化static數(shù)據(jù)成員。l 先執(zhí)行超類的構(gòu)造器,再執(zhí)行子類的構(gòu)造器;在執(zhí)行構(gòu)造器之前,初始化數(shù)據(jù)成員,對(duì)于沒有提供初始值的數(shù)據(jù)成員,將基本類型設(shè)為默認(rèn)初始值,對(duì)象引用設(shè)為null。l 即:超類的

26、static成員變量子類的static成員變量超類的成員變量超類的構(gòu)造方法子類的成員變量子類的構(gòu)造方法。12.9 內(nèi)部類l 在外部類的靜態(tài)方法或者在外部類以外的地方創(chuàng)建內(nèi)部類對(duì)象:OuterClassName.InnerClassNamel 內(nèi)部類用于外部類所有元素的訪問權(quán)限;l .this用于在內(nèi)部類中生成對(duì)外部類的引用,如OuterClassName.this;l .new用于在程序中其它地方創(chuàng)建對(duì)內(nèi)部類的引用;必須使用外部類對(duì)象創(chuàng)建內(nèi)部類對(duì)象,如:Outer outer = new Outer();Outer.Inner inner = outer.new Inner();每個(gè)類都有一個(gè)

27、.class文件,由此產(chǎn)生Class對(duì)象。內(nèi)部類的.class文件有嚴(yán)格的命名規(guī)則,即:OuterClassName$InnerClassName.class13 容器13.1 List的選擇底層實(shí)現(xiàn)特性適用場合Vector/Stack版本較低,避免使用ArrayList數(shù)組訪問快速默認(rèn)選擇;需要執(zhí)行大量的隨機(jī)訪問LinkedList雙向鏈表插入和刪除代價(jià)低廉要經(jīng)常在表中插入或刪除元素最佳做法:將ArrayList做為默認(rèn)首選,只有當(dāng)需要額外的功能,或者當(dāng)程序的性能因?yàn)榻?jīng)常從表中間進(jìn)行插入和刪除而變差的時(shí)候,才去選擇LinkedList。如果元素?cái)?shù)量固定,既可以使用List,也可以使用數(shù)組。13.2 Set的選擇Set的特性:l 不保存重復(fù)元素,元素必須實(shí)現(xiàn)equals()方法;l 不保證維護(hù)元素的次序。底層實(shí)現(xiàn)特性適用場合Ha

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論