版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
...wd......wd......wd...第1章Java概述Java語(yǔ)言的特特點(diǎn)一種面向?qū)ο蟮恼Z(yǔ)言;一種平臺(tái)無(wú)關(guān)的語(yǔ)言;一種強(qiáng)健的語(yǔ)言,吸收了C/C++的優(yōu)點(diǎn),但去掉了其影響程序強(qiáng)健性的局部〔如:指針、內(nèi)存的申請(qǐng)與釋放等〕Java的兩種核心機(jī)制Java虛擬機(jī)〔JavaVirtualMachine〕垃圾回收機(jī)制〔GarbageCollection〕源程序〔*.java文件〕→Java編譯器→字節(jié)碼〔*.class文件〕→類裝載器→字節(jié)碼校驗(yàn)器→解釋器→操作系統(tǒng)平臺(tái)一次編譯,隨處運(yùn)行Java是一種解釋型語(yǔ)言JDK(JavaDevelopmentKit)軟件開(kāi)發(fā)工具包JRE(JavaRuntimeEnvironment)運(yùn)行時(shí)環(huán)境開(kāi)發(fā)需要JDK;用戶只需JREPATH:WINDOWS系統(tǒng)執(zhí)行命令時(shí)要搜尋的路徑〔如javac.exe,java.exe〕CLASSPATH:Java在編譯和運(yùn)行時(shí)要找的class所在路徑〔“.〞代表當(dāng)前路徑〕java:運(yùn)行java程序javac:編譯java程序java–version一個(gè)源文件最多只能有一個(gè)public類,其他類數(shù)量不限,源文件名必須與public類名一致Java應(yīng)用程序的執(zhí)行入口時(shí)main〔〕方法:publicstaticvoidmain(String[]args){…}Java語(yǔ)言中嚴(yán)格區(qū)分大小寫編譯后,每一個(gè)類都對(duì)應(yīng)一個(gè)class文件第2章根基語(yǔ)法標(biāo)示符由字母、下劃線〞_〞、美元符〞$〞或數(shù)字組成標(biāo)示符應(yīng)以字母、下劃線、美元符開(kāi)頭Java標(biāo)示符對(duì)大小寫敏感,長(zhǎng)度無(wú)限制,注意“見(jiàn)名知意〞且不能與Java語(yǔ)言關(guān)鍵字重名abstractdefaultifprivatethisbooleandoimplementsprotectedthrowbreakdoubleimportpublicthrowsbyteelseinstanceofreturntransientcaseextendsintshorttrycatchfinalinterfacestaticvoidcharfinallylongstrctfpvolatileclassfloatnativesuperwhileconstfornewswitchnullcontinuegotopackagesynchronizedgoto和const雖然未使用,但也被作為Java的關(guān)鍵字保存程序執(zhí)行過(guò)程:內(nèi)存硬盤內(nèi)存硬盤heap堆new出來(lái)的東西代碼操作系統(tǒng)heap堆new出來(lái)的東西代碼操作系統(tǒng)代碼程序程序stack棧stack棧局部變量datadatasegment靜態(tài)變量字符串常量codesegmentcodesegment存放代碼1.load到內(nèi)存區(qū)2.找到main方法開(kāi)場(chǎng)執(zhí)行3.執(zhí)行過(guò)程中的內(nèi)存管理整數(shù)類型〔byte、short、int、long整數(shù)類型〔byte、short、int、longJava數(shù)據(jù)類型的劃分?jǐn)?shù)值型數(shù)值型浮點(diǎn)類型〔float、double〕浮點(diǎn)類型〔float、double〕字符型〔char〕基本數(shù)據(jù)類型字符型〔char〕基本數(shù)據(jù)類型數(shù)組接口〔interface〕布爾型〔boolean〕引用數(shù)據(jù)類型數(shù)據(jù)類型類〔class〕數(shù)組接口〔interface〕布爾型〔boolean〕引用數(shù)據(jù)類型數(shù)據(jù)類型類〔class〕boolean類型數(shù)據(jù)只允許取值true或false,不可以使用0或非0的整數(shù)值取代true和false,這點(diǎn)和c語(yǔ)言不同Java字符采用Unicode編碼,每個(gè)字符占兩個(gè)字節(jié),因而可以用十六進(jìn)制編碼形式表示,例:charc=‘\u0061’;Java語(yǔ)言的整型常量默認(rèn)為int類型,聲明long型常量可以后加l或L類型占用存儲(chǔ)空間數(shù)值范圍byte1字節(jié)-27~27-1short2字節(jié)-215~215-1int4字節(jié)-231~231-1long8字節(jié)-263~263-1Java浮點(diǎn)型常量默認(rèn)為double型,聲明float型需在數(shù)字后面加f或F類型占用存儲(chǔ)空間數(shù)值范圍float4字節(jié)-3.403E38~3.403E38double8字節(jié)-1.798E308~1.798E308基本數(shù)據(jù)類型轉(zhuǎn)換boolean類型不可以轉(zhuǎn)換為其他的數(shù)據(jù)類型整型,字符型,浮點(diǎn)型的數(shù)據(jù)在混合運(yùn)算中相互轉(zhuǎn)換,轉(zhuǎn)換時(shí)遵循以下原那么:容量小的類型自動(dòng)轉(zhuǎn)換為容量大的類型:byte,short,char->int->long->float->doublebyte,short,char之間不需要相互轉(zhuǎn)換,他們?nèi)咴谟?jì)算時(shí)首先會(huì)轉(zhuǎn)換為int類型可以將整型常量直接賦值給byte,short,char等類型變量,而不需要進(jìn)展強(qiáng)制類型轉(zhuǎn)換,只要不超過(guò)其表數(shù)范圍“+〞除用于算術(shù)加法外,還可用于對(duì)字符串進(jìn)展連接操作,“+〞運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是字符串〔String〕類型,系統(tǒng)會(huì)自動(dòng)將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)展連接,當(dāng)進(jìn)展打印時(shí),無(wú)論任何類型,都自動(dòng)轉(zhuǎn)換為字符串進(jìn)展打印break&continuebreak語(yǔ)句用于終止某個(gè)語(yǔ)句塊的執(zhí)行。用在循環(huán)語(yǔ)句中,可以強(qiáng)行退出循環(huán)continue語(yǔ)句用在循環(huán)語(yǔ)句體中,用于終止某次循環(huán)過(guò)程,跳過(guò)循環(huán)體中continue語(yǔ)句下面未執(zhí)行的循環(huán),開(kāi)場(chǎng)下一次循環(huán)過(guò)程switch小心case穿透,推薦使用break語(yǔ)句多個(gè)case可以合并到一起default可以省略,但不推薦java中switch語(yǔ)句只能探測(cè)int類型值方法形參、實(shí)參、返回值、返回值類型Java中進(jìn)展函數(shù)調(diào)用中傳遞參數(shù)時(shí),遵循值傳遞的原那么:基本類型傳遞的是該數(shù)據(jù)值本身,引用類型傳遞的是對(duì)象的引用,而非對(duì)象本身遞歸調(diào)用遞歸調(diào)用指在方法執(zhí)行過(guò)程中出現(xiàn)該方法本身的調(diào)用第3章面向?qū)ο缶幊填愂怯脕?lái)創(chuàng)立同一類型的對(duì)象的“模板〞,在一個(gè)類中定義了該類對(duì)象所應(yīng)具有的成員變量和方法,對(duì)象可以看成是靜態(tài)屬性〔成員變量〕和動(dòng)態(tài)屬性〔方法〕的封裝體,是該類的一個(gè)具體實(shí)例,在Java中“一切皆為對(duì)象〞繼承、組合、實(shí)現(xiàn)、多態(tài)類=成員變量+方法成員變量系統(tǒng)可以對(duì)其自動(dòng)初始化,局部變量不初始化會(huì)報(bào)錯(cuò)引用Java語(yǔ)言中除基本類型之外的變量類型都稱之為引用類型〔基本類型占一塊內(nèi)存,引用類型占兩塊內(nèi)存〕Java中的對(duì)象時(shí)通過(guò)引用對(duì)其操作的類時(shí)靜態(tài)的概念,代碼區(qū)對(duì)象是new出來(lái)的,位于堆內(nèi)存〔動(dòng)態(tài)分配內(nèi)存用的〕,類的每個(gè)成員變量在不同的對(duì)象中都有不同的值〔除了靜態(tài)變量〕,而方法只有一份,執(zhí)行的時(shí)候才占內(nèi)存對(duì)象必須使用new關(guān)鍵字創(chuàng)立對(duì)象同一類的每個(gè)對(duì)象有不同的成員變量存儲(chǔ)空間〔除了靜態(tài)變量〕同一類的每個(gè)對(duì)象共享該類的方法非靜態(tài)方法時(shí)針對(duì)每個(gè)對(duì)象進(jìn)展調(diào)用的〔必須創(chuàng)立對(duì)象〕構(gòu)造方法使用new+構(gòu)造方法創(chuàng)立一個(gè)新的對(duì)象構(gòu)造方法是定義在Java類中的一個(gè)用來(lái)初始化對(duì)象的函數(shù)構(gòu)造方法與類同名且沒(méi)有返回值當(dāng)沒(méi)有指定構(gòu)造方法時(shí),編譯器為類自動(dòng)添加形如類名〔〕{}的構(gòu)造方法命名規(guī)那么類名的首字母大寫變量名和方法名的首字母小寫運(yùn)用駝峰標(biāo)識(shí)方法重載〔overload〕方法的重載是指一個(gè)類中可以定義有一樣的名字,但參數(shù)不同的多個(gè)方法。調(diào)用時(shí)根據(jù)不同的參數(shù)列表選擇對(duì)應(yīng)的方法this在類的方法定義中使用this關(guān)鍵字代表使用該類的對(duì)象的引用有時(shí)使用this可以處理方法中成員變量和方法參數(shù)重名的問(wèn)題This可以看做是一個(gè)變量,它的值時(shí)當(dāng)前對(duì)象的引用publicclassLeaf{ intI=0; Leaf(inti){this.i=i}; Leafincreament(){ i++; returnthis;}voidprint(){System.out.println(“i=〞+i);}publicstaticvoidmain(String[]args){ Leafleaf=newLeaf(100); leaf.increament().increament().print();}}static在類中,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次使用時(shí)被初始化,對(duì)于該類的所有對(duì)象來(lái)說(shuō),static成員變量只有一份用static聲明的方法為靜態(tài)方法,在調(diào)用該方法時(shí),不會(huì)將對(duì)象的引用傳遞給它,所以在static方法中不可訪問(wèn)非static的成員靜態(tài)方法不再是針對(duì)某個(gè)對(duì)象調(diào)用,所以不能訪問(wèn)非靜態(tài)成員可以通過(guò)對(duì)象引用或類名〔不需要實(shí)例化〕訪問(wèn)靜態(tài)成員或方法package&import為了解決類的命名沖突問(wèn)題,Java引入的包〔package〕機(jī)制,提供類的多重類命名空間package語(yǔ)句作為Java源文件的第一條語(yǔ)句,指明該文件中定義的類所在的包〔假設(shè)缺省該語(yǔ)句,那么指定為無(wú)名包,裸體類〕Java編譯器把包對(duì)應(yīng)于文件系統(tǒng)的目錄管理,package語(yǔ)句中,用“.〞來(lái)指明包〔目錄〕的層次,例:packagecom.yao;那么該文件中的類位于.\com\yao目錄下如果將一個(gè)類打包,那么使用該類時(shí),必須使用該類的全名〔例如:com.yao.MyClass〕,Java編譯器才會(huì)找到該類也可以使用import在文件的開(kāi)頭引入要使用的類,例:importcom.yao.MyClass可以不需要用import語(yǔ)句直接使用java.lang包中的類訪問(wèn)位于同一個(gè)包中的類不需要引入class文件的最上層包的父目錄必須位于classpath下JDK中主要的包介紹java.lang-包含一些Java語(yǔ)言的核心類,如String、Math、Integer、System和Thread,提供常用功能,使用時(shí)不需要引入〔lang-language〕java.awt-包含了構(gòu)成抽象窗口工具集〔abstractwindowtoolkits〕的多個(gè)類,這些類被用來(lái)構(gòu)建和管理應(yīng)用程序的圖形用戶界面〔GUI〕java.applet-包含了applet運(yùn)行所需的一些類-包含了與網(wǎng)絡(luò)相關(guān)的操作的類java.io-包含能提供多種輸入/輸出功能的類java.util-包含一些實(shí)用工具類,如定義系統(tǒng)特性、使用與日期日歷相關(guān)的函數(shù)java運(yùn)行時(shí)所需的類位于jdk\jre\lib\rt.jar打jar包,定位到需要打包的最上層的父路徑j(luò)ar–cvfxxx.jar*.*(*.*指目錄中所有文件夾打包)jar包也可設(shè)為classpath變量繼承extends通過(guò)繼承,子類自動(dòng)擁有了基類〔superclass〕的所有成員〔成員變量和方法〕〔包括private成員,擁有私有變量的所有權(quán),但無(wú)使用權(quán)〕Java只支持單繼承,不允許多繼承,一個(gè)子類只能有一個(gè)基類,一個(gè)基類可以派生多個(gè)子類訪問(wèn)控制權(quán)限修飾符public、protected、private、default(包訪問(wèn)權(quán)限)修飾符類內(nèi)部同一個(gè)包子類任何地方private√XXXdefault√√XXprotected√√√Xpublic√√√√對(duì)于class的權(quán)限修飾符只可以用public和defaultpublic類可以在任意地方被訪問(wèn)default類只可以被同一個(gè)包內(nèi)的類訪問(wèn)方法重寫overwrite/override在子類中可以根據(jù)需要對(duì)從基類中繼承來(lái)的方法進(jìn)展重寫重寫方法必須和被重寫方法具有一樣方法名稱、參數(shù)列表和返回類型重寫方法不能使用比被重寫方法更嚴(yán)格的訪問(wèn)權(quán)限super在Java類中使用super來(lái)引用基類的成分繼承中的構(gòu)造方法子類的構(gòu)造過(guò)程中必須調(diào)用其基類的構(gòu)造方法子類可以再自己的構(gòu)造方法中使用super〔argument_list〕調(diào)用基類的構(gòu)造方法使用this〔argument_list〕調(diào)用本類的另外的構(gòu)造方法如果調(diào)用super,必須寫在子類構(gòu)造方法的第一行如果子類的構(gòu)造方法中沒(méi)有顯式地調(diào)用基類構(gòu)造方法,那么系統(tǒng)默認(rèn)調(diào)用調(diào)用基類無(wú)參數(shù)的構(gòu)造方法如果子類構(gòu)造方法中既沒(méi)有顯式調(diào)用基類構(gòu)造方法,而基類中又沒(méi)有無(wú)參的構(gòu)造方法,那么編譯出錯(cuò)Object類Object類是所有Java類的根基類如果在類的聲明中未使用extends關(guān)鍵字指明其基類,那么默認(rèn)基類為Object類publicclassPerson{…}等價(jià)于:publicclassPersonextendsObject{…}toString〔〕Object類中定義有publicStringtoString〔〕方法,其返回值時(shí)String類型,描述當(dāng)前對(duì)象的有關(guān)信息,返回一個(gè)字符串,該字符串由類名〔對(duì)象是該類的一個(gè)實(shí)例〕+“@〞+此對(duì)象哈希碼的無(wú)符號(hào)十六進(jìn)制表示組成,即getClass〔〕.getName〔〕+‘@’+Integer.toHexString〔hashCode〔〕〕在進(jìn)展String與其他類型數(shù)據(jù)的連接操作時(shí)〔如:System.out.println(“info〞+person)〕,將自動(dòng)調(diào)用該對(duì)象類的toString〔〕方法可以根據(jù)需要在用戶自定義類型中重寫toString〔〕方法,建議所有子類都重新此方法equals〔〕publicbooleanequals(Objectobj)x.equals(y)對(duì)于任何非空引用值,當(dāng)且僅當(dāng)x和y引用同一個(gè)對(duì)象時(shí),此方法返回true〔x==y具有值true〕JDK提供了一些類,如String,Date等,重寫了Object的equals〔〕方法,調(diào)用這些類的equals〔〕方法,x.equals〔y〕,當(dāng)x和y所引用的對(duì)象時(shí)同一類對(duì)象且屬性內(nèi)容相等時(shí)〔并不一定時(shí)同一對(duì)象〕,返回true,否那么返回false建議重寫例子:Strings1=newString(“Hello〞);Strings2=newString(“Hello〞);System.out.println(s1==s2);//falseSystem.out.println(s1.equals(s2));//true對(duì)象轉(zhuǎn)型〔casting〕一個(gè)基類的引用類型變量可以“指向〞其子類的對(duì)象一個(gè)基類的引用不可以訪問(wèn)其子類對(duì)象新增加的成員〔屬性和方法〕可以使用引用變量+instanceof+類名,來(lái)判斷該引用變量所“指向〞的對(duì)象是否屬于該類或該類的子類子類的對(duì)象可以當(dāng)作基類的對(duì)象來(lái)使用稱作向上轉(zhuǎn)型〔upcasting〕,反之稱為鄉(xiāng)下轉(zhuǎn)型〔downcasting〕,需強(qiáng)制轉(zhuǎn)換動(dòng)態(tài)綁定和多態(tài)動(dòng)態(tài)綁定是指在執(zhí)行期間〔而非編譯期間〕判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際類型調(diào)用其相應(yīng)的方法1.要有繼承2.要有重寫3.父類引用指向子類對(duì)象抽象類用abstract關(guān)鍵字來(lái)修飾一個(gè)類時(shí),這個(gè)類叫做抽象類;用abstract來(lái)修飾一個(gè)方法時(shí),該方法叫做抽象方法含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫抽象類不能被實(shí)例化抽象方法只需聲明,而不需實(shí)現(xiàn)finalfinal的變量的值不能被改變final的方法不能被重寫final的類不能被繼承接口interface實(shí)現(xiàn)implements接口是抽象方法和常量值得定義的集合從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含了常量和方法的定義,而沒(méi)有變量和方法的實(shí)現(xiàn)多個(gè)無(wú)關(guān)的類可以實(shí)現(xiàn)同一個(gè)接口一個(gè)類可以實(shí)現(xiàn)多個(gè)無(wú)關(guān)的接口與繼承關(guān)系類似,接口與實(shí)現(xiàn)類之間存在多態(tài)性接口中聲明屬性默認(rèn)為publicstaticfinal的,也只能是publicstaticfinal的接口中只能定義抽象方法,而且這些方法默認(rèn)為public的,也只能是public的接口可以繼承其他的接口,并添加新的屬性和抽象方法第4章異常處理異常指運(yùn)行期出現(xiàn)的錯(cuò)誤所謂錯(cuò)誤是指在程序運(yùn)行的過(guò)程中發(fā)生的一些異常事件〔如:除0溢出、數(shù)組下標(biāo)越界、所要讀取的文件不存在〕Java程序的執(zhí)行過(guò)程中如出現(xiàn)異常事件,可以生成一個(gè)異常類對(duì)象,該異常對(duì)象封裝了異常事件的信息并將被提交給Java運(yùn)行時(shí)系統(tǒng),這個(gè)過(guò)程稱為拋出〔throw〕異常聲明該方法可能拋出的異常當(dāng)Java運(yùn)行時(shí)系統(tǒng)接收到異常對(duì)象時(shí),會(huì)尋找處理這一異常的代碼并把當(dāng)前異常對(duì)象交給其處理,這一過(guò)程稱為捕獲〔catch〕異常聲明該方法可能拋出的異常異常的概念publicvoidsomeMethodpublicvoidsomeMethod〔〕throwssomeException{ if(someCondition()){ thrownewsomeException(“錯(cuò)誤原因〞);}………}構(gòu)造并拋出異常對(duì)象構(gòu)造并拋出異常對(duì)象調(diào)用該方法時(shí)試圖捕獲異常調(diào)用該方法時(shí)試圖捕獲異常RuntimeExceptionExceptionErrorThrowable定義處理異常的代碼try{ someMethod();}catch(SomeExceptione){ //異常處理代碼;}RuntimeExceptionExceptionErrorThrowable定義處理異常的代碼try{ someMethod();}catch(SomeExceptione){ //異常處理代碼;}Error:稱為錯(cuò)誤,由Java虛擬機(jī)生成并拋出,包括動(dòng)態(tài)鏈接失敗、虛擬機(jī)錯(cuò)誤等,程序?qū)ζ洳蛔鎏幚鞥xception:所有異常類的父類,其子類對(duì)應(yīng)了各種各樣可能出現(xiàn)的異常事件,一般需要用戶顯式的聲明或捕獲RuntimeException:特殊的異常,如被0除、數(shù)組下標(biāo)越界等,其產(chǎn)生比較頻繁,處理麻煩,如果顯式的聲明或捕獲將會(huì)對(duì)程序可讀性和運(yùn)行效率影響很大,因此由系統(tǒng)自動(dòng)檢測(cè)并將它們交給缺省的異常處理程序〔用戶可不必對(duì)其處理〕·Exception〔injava.lang〕·ClassNotFoundException·IOException·InterruptedException·RuntimeException·ArithmeticException〔當(dāng)出現(xiàn)異常的運(yùn)算條件時(shí),拋出此異常。例如,一個(gè)整數(shù)“除以零〞時(shí),拋出此類的一個(gè)實(shí)例〕·NullPointerException·IndexOutOfBoundsException〔指示某排序索引〔例如對(duì)數(shù)組、字符串或向量的排序〕超出范圍時(shí)拋出。〕·ArrayIndexOutOfBoundsException〔用非法索引訪問(wèn)數(shù)組時(shí)拋出的異常。如果索引為負(fù)或大于等于數(shù)組大小,那么該索引為非法索引?!场tringIndexOutOfBoundsException〔此異常由String方法拋出,指示索引或者為負(fù),或者超出字符串的大小。對(duì)諸如charAt的一些方法,當(dāng)索引等于字符串的大小時(shí),也會(huì)拋出該異常。〕finallytry代碼段后跟有一個(gè)或多個(gè)catch代碼段每個(gè)catch代碼段聲明其能處理的一種特定類型的異常并提供處理的方法try代碼段后跟有一個(gè)或多個(gè)catch代碼段每個(gè)catch代碼段聲明其能處理的一種特定類型的異常并提供處理的方法當(dāng)異常發(fā)生時(shí),程序會(huì)終止當(dāng)前的流程,根據(jù)獲取異常的類型去執(zhí)行相應(yīng)的catch代碼段如果沒(méi)有異常產(chǎn)生,所有的catch代碼段都被略過(guò)不執(zhí)行finally段的代碼無(wú)論是否發(fā)生異常都會(huì)執(zhí)行通常在finally語(yǔ)句中可以進(jìn)展資源的去除工作,如:關(guān)閉翻開(kāi)的文件,刪除臨時(shí)文件等try{//可能拋出異常的語(yǔ)句}catch(SomeException1e){ ……}catch(SomeException2e){ ……}finally{ ……}捕獲SomeException2時(shí)try{捕獲SomeException2時(shí)try{ 語(yǔ)句1; 語(yǔ)句2;}catch〔SomeException1e〕{……}catch〔SomeException2e〕{……}finally{……}后面的語(yǔ)句;沒(méi)有捕獲到異常時(shí)try{ 語(yǔ)句1; 語(yǔ)句2;}catch〔SomeException1e〕{……}catch〔SomeException2e〕{……}finally{……}后面的語(yǔ)句;getMessage〔〕方法,用來(lái)得到有關(guān)異常事件的信息printStackTrace〔〕方法,用來(lái)跟蹤異常事件發(fā)生時(shí)執(zhí)行堆棧的內(nèi)容在一個(gè)try語(yǔ)句塊中,基類異常的捕獲語(yǔ)句不可以寫在子類異常捕獲語(yǔ)句的上面,否那么會(huì)有編譯錯(cuò)誤,子類異常不會(huì)被捕獲先逮小的,再逮大的在一個(gè)try語(yǔ)句塊中,基類異常的捕獲語(yǔ)句不可以寫在子類異常捕獲語(yǔ)句的上面,否那么會(huì)有編譯錯(cuò)誤,子類異常不會(huì)被捕獲先逮小的,再逮大的readFile〔〕throwsIOException{……}拋出拋出拋出publicstaticmain〔Strings〕{ try{method2〔〕}catch〔IOExceptione〕{…拋出拋出拋出publicstaticmain〔Strings〕{ try{method2〔〕}catch〔IOExceptione〕{…} }method2〔〕throwsIOException{ method2〔〕}method1〔〕throwsIOException{ readFile〔〕}使用自定義的異常1.通過(guò)繼承java.lang.Exception類聲明自己的異常類2.在方法適當(dāng)?shù)奈恢蒙勺远x異常的實(shí)例,并用throw語(yǔ)句拋出3.在方法的聲明局部用throws語(yǔ)句聲明該方法可能拋出的異常classMyExceptionextendsException{ privateintid; publicMyException(Stringmessage,intid){ super(message);this.id=id; } publicitgetId(){ returnid; }}注意:重寫方法需要拋出與原方法所拋出異常類型一致的異常貨不拋出異常第5章數(shù)組數(shù)組變量屬引用類型,數(shù)組也可以看成是對(duì)象,數(shù)組中的每個(gè)元素相當(dāng)于該對(duì)象的成員變,因此數(shù)組分配空間后,每個(gè)元素也被按照成員變量的規(guī)那么被隱式初始化typevar[];或type[]var;Java語(yǔ)言中聲明數(shù)組時(shí)不能指定其長(zhǎng)度〔數(shù)組中元素的個(gè)數(shù)〕例:inta[5];//非法Java中使用關(guān)鍵字new創(chuàng)立數(shù)組對(duì)象,格式為:數(shù)組名=new數(shù)組元素的類型[數(shù)組元素的個(gè)數(shù)]注意:元素為引用數(shù)據(jù)類型的數(shù)組中的每一個(gè)元素都需要實(shí)例化動(dòng)態(tài)初始化:數(shù)組定義與為數(shù)組元素分配空間和賦值的操作分開(kāi)進(jìn)展靜態(tài)初始化:在定義數(shù)組的同時(shí)就為數(shù)組元素分配空間并賦值每一個(gè)數(shù)組都有一個(gè)屬性length指明它的長(zhǎng)度,例:a.length的值為數(shù)組a的長(zhǎng)度〔元素個(gè)數(shù)〕Java中多維數(shù)組的聲明和初始化應(yīng)按從高維到低維的順序進(jìn)展例如:inta[][]=newint[3][];a[0]=newint[2];a[1]=newint[4];a[2]=newint[3];//interror[][]=newint[][4];是錯(cuò)誤的數(shù)組的拷貝使用java.lang.System類的靜態(tài)方法publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)可以用于數(shù)組src從第srcPos項(xiàng)元素開(kāi)場(chǎng)的length個(gè)元素拷貝到目標(biāo)數(shù)組dest從destPos項(xiàng)開(kāi)場(chǎng)的length個(gè)位置如果源數(shù)據(jù)數(shù)目超出目標(biāo)數(shù)組邊界會(huì)拋出IndexOutOfBoundsException異常第6章常用類StringJava.lang.String類代表不可變的字符序列字符串是常量;它們的值在創(chuàng)立之后不能更改。字符串緩沖區(qū)支持可變的字符串。因?yàn)镾tring對(duì)象是不可變的,所以可以共享。例如:Stringstr="abc";等效于chardata[]={'a','b','c'};Stringstr=newString(data);Java語(yǔ)言提供對(duì)字符串串聯(lián)符號(hào)〔"+"〕以及將其他對(duì)象轉(zhuǎn)換為字符串的特殊支持。字符串串聯(lián)是通過(guò)StringBuilder〔或StringBuffer〕類及其append方法實(shí)現(xiàn)的。字符串轉(zhuǎn)換是通過(guò)toString方法實(shí)現(xiàn)的,該方法由Object類定義,并可被Java中的所有類繼承?!皒xxx〞為該類的一個(gè)對(duì)象String類的常見(jiàn)構(gòu)造方法:String〔Stringoriginal〕:創(chuàng)立一個(gè)String對(duì)象為original的拷貝String〔char[]value〕:用一個(gè)字符數(shù)組創(chuàng)立一個(gè)String對(duì)象String〔char[]value,intoffset,intcount〕:用一個(gè)字符數(shù)組從offset項(xiàng)開(kāi)場(chǎng)的count個(gè)字符序列創(chuàng)立一個(gè)String對(duì)象publicclassTest{publicstaticvoidmain(String[]args){Strings1=“hello〞;Strings2=“hello〞;System.out.println(s1==s2);//trues1=newString(“hello〞);s2=newString(“hello〞);System.out.println(s1==s2);//falseSystem.out.println(s1.equals(s2));//truechar[]c={‘s’,’u’,’n’,’‘,‘j’,‘a(chǎn)’,‘v’,‘a(chǎn)’};Strings4=newString(c);Strings5=newString(c,4,4);System.out.println(s4);//sunjavaSystem.out.println(s5);//java}}String類常用方法〔1〕publiccharcharAt(intindex):返回字符創(chuàng)中的第index個(gè)字符publicintlength():返回字符串的長(zhǎng)度publicintindexOf(Stringstr):返回字符串中出現(xiàn)str的第一個(gè)位置publicintindexOf(Stringstr,intfromIndex):返回字符串中從fromIndex開(kāi)場(chǎng)出現(xiàn)str的第一個(gè)位置publicbooleanequalsIgnoreCase(Stringanother):比較字符串與another是否一樣〔忽略大小寫〕publicStringreplace(charoldChar,charnewChar):在字符串中用newChar字符替換oldChar字符publicclassTest{publicstaticvoidmain(String[]args){Strings1=“sunjava〞;s2=“SunJava〞;System.out.println(s1.charAt(1));//u System.out.println(s2.length());//8System.out.println(s1.indexOf(“java〞));//4System.out.println(s1.indexOf(“Java〞));//-1System.out.println(s1.equals(s2));//falseSystem.out.println(s1.equalsIngoreCase(s2));//trueStrings=“我是程序員,我在學(xué)java〞;Stringsr=s.replace(‘我’,’你’);System.out.println(sr);//你是程序員,你在學(xué)java}}String類常用方法〔2〕publicbooleanstartsWith(Stringprefix):判斷字符串是否以prefix字符串開(kāi)頭publicbooleanendsWith(Stringsuffix):判斷字符串是否以suffix字符串結(jié)尾publicStringtoUpperCase():返回一個(gè)字符串為該字符串的大寫形式publicStringtoLowerCase():返回一個(gè)字符串為該字符串的小寫形式publicStringsubstring(intbeginIndex):返回該字符串從beginIndex開(kāi)場(chǎng)到結(jié)尾的子字符串publicStringsubstring(intbeginIndex,intendIndex):返回該字符串從beginIndex開(kāi)場(chǎng)到endIndex結(jié)尾的子字符串publicStringtrim():返回將該字符串去掉開(kāi)頭和結(jié)尾空格后的字符串publicclassTest{publicstaticvoidmain(String[]args){Strings=“WelcometoJavaWorld!〞;Strings1=“sunjava〞;System.out.println(s.startWith(“Welcome〞));//trueSystem.out.println(s.endWith(“World〞));//falseStringsL=s.toLowerCase();StringsU=s.toUpperCase();System.out.println(sL);//welcometojavaworldSystem.out.println(sU);//WELCOMETOJAVAWORLDStringsubS=s.substring(11);System.out.println(subS);//JavaWorldStringsp=s1.trim();System.out.println(sp);//sunjava}}String類常用方法〔3〕靜態(tài)重載方法publicstaticStringvalueOf(…)可以將基本類型數(shù)據(jù)轉(zhuǎn)換為字符串,例:publicstaticStringvalueOf(doubled)publicstaticStringvalueOf(inti)……publicString[]split(Stringregex)可以將一個(gè)字符串按照指定的分隔符〔regex〕分隔,返回分隔后的字符串?dāng)?shù)組publicclassTest{publicstaticvoidmain(String[]args){intj=1234567;StringsNum=String.valueOf(j);System.out.println(“j是〞+sNum.length()+“位數(shù)〞);//j是7位數(shù)Strings=“Mary,F,1988〞;String[]sPlit=s.split(“,〞);for(inti=0;i<sPlit.length;i++)System.out.println(sPlit[i]);//Mary/nF/n/1976}}StringBuffer類java.lang.StringBuffer代表可變的字符序列StringBuffer和String類似,但StringBuffer可以對(duì)其字符串進(jìn)展改變Strings1=“hello〞;Strings2=“world〞;s2s1helloworldhelloworlds1=s1+s2;s2s1helloworldhelloworldStringBuffer類常見(jiàn)的構(gòu)造方法StringBuffer〔〕:創(chuàng)立一個(gè)不包含字符序列的“空〞的StringBuffer對(duì)象StringBuffer〔Stringstr〕:創(chuàng)立一個(gè)StringBuffer對(duì)象,包含與String對(duì)象一樣的字符序列StringBuffer常用方法重載方法publicStringBufferappend(…):可以為該StringBuffer對(duì)象添加字符序列,返回添加后的該StringBuffer對(duì)象引用,例如:publicStringBufferappend(Stringstr)publicStringBufferappend(StringBuffersbuf)publicStringBufferappend(char[]str)publicStringBufferappend(char[]str,intoffset,intlen)publicStringBufferappend(doubled)publicStringBufferappend(Objectobj)重載方法publicStringBufferinsert(…)可以為該StringBuffer對(duì)象在指定位置插入字符序列,返回修改后的該StringBuffer對(duì)象引用,例:publicStringBufferinsert(intoffset,Stringstr)publicStringBufferinsert(intoffset,doubled)…方法publicStringBufferdelete(intstart,intend)可以刪除從start開(kāi)場(chǎng)到end-1為止的一段字符序列,返回修改后的該StringBuffer對(duì)象引用和String類含義類似的方法;publicintindexOf(Stringstr)publicintindexOf(Stringstr,intfromIndex)publicStringsubstring(intstart)publicStringsubstring(intstart,intend)publicintlength()publicStringBufferreverse()用于將字符序列逆序,返回修改后的該StringBuffer對(duì)象的引用publicclassTest{publicstaticvoidmain(String[]args){Strings=“Mircosoft〞;char[]a={‘a(chǎn)’,’b’,’c’};StringBuffersb1=newStringBuffer(s);sb1.append(‘/’).append(“IBM〞).append(‘/’).append(“Sun〞);System.out.println(sb1);//Mircosoft/IBM/SunStringBuffersb2=newStringBuffer(“數(shù)字〞);for(inti=0;i<=9;i++)sb2.append(i);System.out.priintln(sb2);//數(shù)字0123456789sb2.delete(8,sb2.length()).insert(0,a);System.out.println(sb2);//abc數(shù)字012345System.out.println(sb2.reverse());//54321字?jǐn)?shù)cba}}基本數(shù)據(jù)類型包裝類包裝類〔如:Integer,Double等〕這些類封裝了一個(gè)相應(yīng)的基本數(shù)據(jù)類型值,并為其提供了一系列操作以java.lang.Integer類為例,構(gòu)造方法:Integer(intvalue)Integer(Strings)常見(jiàn)方法publicstaticfinalintMAX_VALUE最大的int型數(shù)〔231-1〕publicstaticfinalintMIN_VALUE最小的int型數(shù)〔-231〕publiclonglongValue():返回封裝數(shù)據(jù)的long型值publicdoubledoubleValue():返回封裝數(shù)據(jù)的double型值publicintintValue():返回封裝數(shù)據(jù)的int型值publicstaticintparseInt(Strings)throwsNumberFormatException:將字符串解析成int型數(shù)據(jù),返回該數(shù)據(jù)publicstaticIntegervalueOf(Strings)throwsNumberFormatException:返回Integer對(duì)象,其中封裝的整型數(shù)據(jù)為字符串s所表示Math類java.lang.Math提供了一系列靜態(tài)方法用于科學(xué)計(jì)算,其方法的參數(shù)和返回值類型一般為double型abs:絕對(duì)值acos,asin,atan,cos,sin,tansqrt:平方根pow(doublea,doubleb):a的b次冪log:自然對(duì)數(shù)exp:e為底指數(shù)max(doublea,doubleb)min(doublea,doubleb)random():返回0.0到1.0〔不包含〕的隨機(jī)數(shù)longround(doublea):double型的數(shù)據(jù)a轉(zhuǎn)換為long型〔四舍五入〕toDegrees(doubleangrad):弧度->角度toRadians〔doubleangdeg〕:角度->弧度File類java.io.File類代表系統(tǒng)文件名〔路徑和文件名〕常見(jiàn)構(gòu)造方法:publicFile(Stringpathname):以pathname為路徑創(chuàng)立File對(duì)象,如果pathname是相對(duì)路徑,那么默認(rèn)的當(dāng)前路徑在系統(tǒng)屬性u(píng)ser.dir中存儲(chǔ)publicFile(Stringparent,Stringchild):以parent為父路徑,child為子路徑創(chuàng)立File對(duì)象File的靜態(tài)屬性Stringseparator存儲(chǔ)了當(dāng)前系統(tǒng)的路徑分隔符常用方法通過(guò)File對(duì)象可以訪問(wèn)文件的屬性publicbooleancanRead()publicbooleancanWrite()publicbooleanexists()publicbooleanisDirectory()publicbooleanisFile()publicbooleanisHidden()publiclonglastModified():返回此抽象路徑名表示的文件最后一次被修改的時(shí)間publiclonglength():返回此抽象路徑名表示的文件的長(zhǎng)度。如果此路徑表示一個(gè)目錄,那么返回值不確定publicStringgetName():返回由此抽象路徑名表示的文件或目錄的名稱publicStringgetPath():將此抽象路徑名轉(zhuǎn)換為一個(gè)路徑名字符串通過(guò)File對(duì)象創(chuàng)立空文件或目錄〔在該對(duì)象所指的文件或目錄不存在的情況下〕publicbooleancreateNewFile()throwsIOExceptionpublicbooleandelete()publicbooleanmkdir():創(chuàng)立此抽象路徑名指定的目錄publicbooleanmkdirs():創(chuàng)立此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄importjava.io.*;publicclassTestFile{publicstaticvoidmain(String[]args){Stringseparator=File.separator;Stringfilename="myfile.txt";Stringdirectory="mydir1"+separator+"mydir2";//Stringdirectory="mydir1/mydir2";//Stringdirectory="mydir1\\mydir2";Filef=newFile(directory,filename);if(f.exists()){System.out.println("文件名:"+f.getAbsolutePath());System.out.println("文件大?。?+f.length());}else{f.getParentFile().mkdirs();try{f.createNewFile();}catch(IOExceptione){e.printStackTrace();}}}}第7章容器JDK所提供的容器API位于java.utilCollection接口-定義可存取一組對(duì)象的方法,其子接口Set和List分別定義了存儲(chǔ)方式Set中的數(shù)據(jù)對(duì)象沒(méi)有順序且不可以重復(fù)List中的數(shù)據(jù)對(duì)象有順序且可以重復(fù)Map接口定義了存儲(chǔ)“鍵〔key〕—值〔value〕映射對(duì)〞的方法HashMap<interface>MapArrayListLinkedListHashSet<interface>List<interface>Set<interface>CollectionHashMap<interface>MapArrayListLinkedListHashSet<interface>List<interface>Set<interface>CollectionCollection接口中所定義的方法:intsize()booleanisEmpty()voidclear()booleancontains(Objectelement)booleanadd(Objectelement):只能添加對(duì)象,不能添加根基類型,添加根基類型包裝類對(duì)象〔根基類型一般存放在棧上,站上的內(nèi)容隨時(shí)有可能被清空,不能保存〕booleanremove(Objectelement):調(diào)用對(duì)象的equals〔〕方法Iteratoriterator()booleancontainAll(Collectionc)booleanaddAll(Collectionc);booleanremoveAll(Collectionc)booleanretainAll(Collectionc):交集Object[]toArray()容器類對(duì)象在調(diào)用remove、contains等方法時(shí)需要比較對(duì)象是否相等,這時(shí)會(huì)涉及到對(duì)象類型的equals〔〕方法和hashCode〔〕方法;對(duì)于自定義的類型,需要重寫equals()和hashCode()方法以實(shí)現(xiàn)自定義的對(duì)象相等規(guī)那么,重寫equals()方法的同時(shí),必須重寫hashCode()方法注意:相等的對(duì)象應(yīng)該具有相等的hashcodesIterator接口所有實(shí)現(xiàn)了Collection接口的容器類都有一個(gè)iterator()方法用以返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象Iterator對(duì)象稱作迭代器,用以方便的實(shí)現(xiàn)對(duì)容器內(nèi)元素的遍歷操作Iterator接口定義了以下方法:booleanhasNext():判斷游標(biāo)右邊是否有元素Objectnext():返回游標(biāo)右邊的元素并將游標(biāo)移動(dòng)到下一個(gè)位置(next()的返回值為Object類型,需要轉(zhuǎn)換為相應(yīng)類型)voidremove():刪除游標(biāo)左面的元素,在執(zhí)行完next之后該操作只能執(zhí)行一次游標(biāo)元素next()Iterator對(duì)象的remove()方法時(shí)在迭代過(guò)程中刪除元素的唯一的安全方法foreach語(yǔ)句foreach對(duì)于遍歷array或Collection相當(dāng)方便for(:)…;缺陷:數(shù)組:不能方便的訪問(wèn)下標(biāo)值集合:與使用Iterator相比,不能方便的刪除集合中的內(nèi)容總結(jié):除了簡(jiǎn)單遍歷并閱讀出其中的內(nèi)容外,不建議使用foreachSet接口Set接口是Collection的子接口,Set接口沒(méi)有提供額外的方法,但實(shí)現(xiàn)Set接口的容器類中的元素師沒(méi)有順序的,而且不可以重復(fù)〔即一樣的元素不會(huì)被參加〕,有HashSet,TreeSet等List接口List接口是Collection的子接口,實(shí)現(xiàn)List接口的容器類中的元素師有順序的,而且可以重復(fù)List容器中的元素都對(duì)應(yīng)一個(gè)整數(shù)型的序號(hào)記載其在容器中的位置,可以根據(jù)序號(hào)存取容器中的元素,有ArraryList,LinkedList等List接口常用方法Objectget(intindex)Objectset(intindex,Objectelement):替換voidadd(intindex,Objectelement):插入booleanremove(intindex)intindexOf(Objecto):返回此列表中第一次出現(xiàn)的指定元素的索引;如果此列表不包含該元素,那么返回-1intlastIndexOf(Objecto)Lists常用算法類java.util.Collections提供了一些靜態(tài)方法實(shí)現(xiàn)了基于List容器的一些常用算法voidsort(List):對(duì)List容器內(nèi)的元素排序voidshuffle(List):對(duì)List容器內(nèi)的對(duì)象進(jìn)展隨機(jī)排序voidreverse(List):對(duì)List容器內(nèi)的對(duì)象進(jìn)展逆序排序voidfill(List,Object):用一個(gè)特定的對(duì)象重寫整個(gè)List容器voidcopy(Listdest,Listsrc):將srcList容器內(nèi)容拷貝到destList容器內(nèi)intbinarySearch(List,Object):對(duì)于順序的List容器,采用折半查找法查找特定對(duì)象所有可以“排序〞的類都實(shí)現(xiàn)了java.lang.Comparable接口,Comparable接口中只有一個(gè)方法:publicintcompareTo(Objectobj),該方法:返回0表示this==obj;返回正數(shù)表示this>obj;返回負(fù)數(shù)表示this<obj實(shí)現(xiàn)Comparable接口的類通過(guò)實(shí)現(xiàn)comparaTo方法從而確定該類對(duì)象的排序方式若何選擇數(shù)據(jù)構(gòu)造衡量標(biāo)準(zhǔn):讀的效率和改的效率Array讀快改慢Linked讀慢改快Hash介于上兩者之間Map接口實(shí)現(xiàn)Map接口的類用來(lái)存儲(chǔ)鍵-值對(duì)Map接口的實(shí)現(xiàn)類有HashMap和TreeMapMap類中存儲(chǔ)的鍵-值對(duì)通過(guò)鍵來(lái)標(biāo)識(shí),所以鍵值不能重復(fù)Map類常用方法:Objectput(Objectkey,Objectvakue)Objectget(Objectkey)Objectremove(Objectkey)booleancontainKey(Objectkey)booleancontainValue(Objectvalue)intsize()booleanisEmpty()voidputAll(Mapt):從指定映射中將所有映射關(guān)系復(fù)制到此映射中voidclear()importjava.util.*;publicclassTest{privatestaticfinalIntegerONE=newInteger(1);//privatestaticfinalintONE=1;publicstaticvoidmain(String[]args){Mapm=newHashMap();for(inti=0;i<args.length;i++){Integerfreq=(Integer)m.get(args[i]);//intfreq=(Integer)m.get(args[i])==null?0:(Integer)m.get(args[i]);m.put(args[i],(freq==null?ONE:newInteger(Value()+1)));//m.put(args[i],freq==0?ONE:freq+1);}System.out.println(m.size()+“distinctwordsdetected:〞);System.out.println(m);}}Auto_boxing/unboxing在適宜的時(shí)機(jī)自動(dòng)打包、解包自動(dòng)將根基類型裝換成對(duì)象自動(dòng)將對(duì)象裝換為根基類型起因:JDK1.4以前類型不明確:起因:JDK1.4以前類型不明確:裝入集合的類型都被當(dāng)做Object對(duì)待,從而失去自己的實(shí)際類型從集合中取出時(shí)往往需要轉(zhuǎn)型,效率低,容易產(chǎn)生錯(cuò)誤解決方法:在定義集合的時(shí)候同時(shí)定義集合中對(duì)象的類型可以在定義Conllection的時(shí)候指定也可以在循環(huán)時(shí)用Iterator指定好處:增強(qiáng)程序的可讀性和穩(wěn)定性importjava.util.*;publicclassBasicGeneric{publicstaticvoidmain(String[]args){List<String>c=newArrayList<String>();c.add("aaa");c.add("bbb");c.add("ccc");for(inti=0;i<c.size();i++){Strings=c.get(i);System.out.println(s);} Collection<String>c2=newHashSet<String>();c2.add("aaa");c2.add("bbb");c2.add("ccc");for(Iterator<String>it=c2.iterator();it.hasNext();){Strings=it.next();System.out.println(s);}}}第8章流java.io按數(shù)據(jù)流的方向的不同可以分為:輸入流和輸出流〔站在程序的角度上〕按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流按功能不同可以分為節(jié)點(diǎn)流和處理流字節(jié)流字符流輸入流InputStreamReader輸出流OutputStreamWriter節(jié)點(diǎn)流為可以從一個(gè)特定的數(shù)據(jù)源〔節(jié)點(diǎn)〕讀寫數(shù)據(jù)〔如:文件,內(nèi)存〕程序數(shù)據(jù)源 節(jié)點(diǎn)流程序數(shù)據(jù)源數(shù)據(jù)源處理流是“連接〞在已存在的流〔節(jié)點(diǎn)流或處理流〕之上,通過(guò)對(duì)數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫功能數(shù)據(jù)源數(shù)據(jù)源程序程序數(shù)據(jù)源程序程序InputStream繼承自InputStream的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)〔8bit〕;以以下圖中深色的為節(jié)點(diǎn)流,淺色的為處理流PushbackInputStreamBufferdInputStreamDataInputStreamLineNumberInputStreamInputStreamObjectInputStreamStringBufferInputStreamSequenceInputStreamByteArrayInputStreamFilterInputStreamPipedInputStreamFileInputStreamPushbackInputStreamBufferdInputStreamDataInputStreamLineNumberInputStreamInputStreamObjectInputStreamStringBufferInputStreamSequenceInputStreamByteArrayInputStreamFilterInputStreamPipedInputStreamFileInputStreamInputStream的基本方法intread()throwsIOException//讀一個(gè)字節(jié)并以整數(shù)的形式返回〔0~255〕,如果返回-1表示已到輸入流的末尾intread(byte[]buffer)throwsIOException//讀取一系列字節(jié)并存儲(chǔ)到一個(gè)數(shù)組buffer,返回實(shí)際讀取的字節(jié)數(shù),如果讀取前已到輸入//流的末尾返回-1intread(byte[]buffer,intoffset,intlength)throwsIOException//讀取length個(gè)字節(jié),并存儲(chǔ)到一個(gè)字節(jié)數(shù)組buffer,從offset位置開(kāi)場(chǎng),返回實(shí)際讀取的//字節(jié)數(shù),如果讀取前已到輸入流的末尾返回-1voidclose()throwsIOException//關(guān)閉流釋放內(nèi)存資源longslip(longn)throwsIOException//跳過(guò)n個(gè)字節(jié)不讀,返回實(shí)際跳過(guò)的字節(jié)數(shù)OutputStream繼承自O(shè)utputStream的流時(shí)用于程序中的輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)〔8bit〕;以以下圖中深色的為節(jié)點(diǎn)流,淺色的為處理流FileOutputStreamFileOutputStreamOutputStreamPrintStreamBufferdOutputStreamDataOutputStreamObjectOutputStreamByteArrayOutputStreamFilterOutputStreamPipedOutputStreamOutputStreamPrintStreamBufferdOutputStreamDataOutputStreamObjectOutputStreamByteArrayOutputStreamFilterOutputStreamPipedOutputStreamOutputStream的基本方法voidwrite(intb)throwsIOException//向輸出流中寫入一個(gè)字節(jié)的數(shù)據(jù),該字節(jié)數(shù)據(jù)位為參數(shù)b的低8位voidwrite(byte[]b)throwsIOException//將一個(gè)字節(jié)類型的數(shù)組中的數(shù)據(jù)寫入輸出流voidwrite(byte[]b,intoff,intlen)throwsIOException//將一個(gè)字節(jié)類型的數(shù)組中的從指定位置〔off〕開(kāi)場(chǎng)的len個(gè)字節(jié)寫入到輸出流voidclose()throwsIOException//關(guān)閉流釋放內(nèi)存資源voidflush()throwsIOException//將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地Reader繼承自Reader的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字符〔16bit〕;以以下圖中深色為節(jié)點(diǎn)流,淺色為處理流LineNumberReaderBufferedReaderLineNumberReaderBufferedReaderReaderPushBackReaderFileReaderStringReaderPipedReaderFilterReaderInputStreamReaderCharArrayReaderReaderPushBackReaderFileReaderStringReaderPipedReaderFilterReaderInputStreamReaderCharArrayReaderReader的基本方法intread()throwsIOException//讀取一個(gè)字符并以整數(shù)的形式返回〔0~255〕,如果返回-1已到輸入流的末尾intread(char[]cbuf)throwsIOException//讀取一系列字符并存儲(chǔ)到一個(gè)數(shù)組buffer,返回實(shí)際讀取的字符數(shù),如果讀取前已到輸入流的末尾返回-1intread(char[]cbuf,intoffset,intlength)throwsIOException//讀取length個(gè)字符,并存儲(chǔ)到一個(gè)數(shù)組buffer,從offset位置開(kāi)場(chǎng),返回實(shí)際讀取的字符數(shù),如果讀取前已到輸入流的末尾返回-1voidclose()throwsIOException//關(guān)閉流釋放內(nèi)存資源longslip(longn)throwsIOException//跳過(guò)n個(gè)字符不讀,返回實(shí)際跳過(guò)的字符數(shù)Write繼承自Write的流都是用于程序中輸出數(shù)據(jù),且數(shù)據(jù)的單位為字符〔16bit〕;以以下圖中深色的為節(jié)點(diǎn)流,淺色的為處理流BufferedWriterBufferedWriterWriteFileWriterFilterWriterStringWriterPipedWriterFilterWriterOutputStreamWriterCharArrayWriterWriteFileWriterFilterWriterStringWriterPipedWriterFilterWriterOutputStreamWriterCharArrayWriterWrite的基本方法voidwrite(intc)throwsIOException//向輸出流中寫入一個(gè)字符數(shù)據(jù),該字符數(shù)據(jù)為參數(shù)c的低16位voidwrie(char[]cbuf)throwsIOException//將一個(gè)字符類型的數(shù)組中的數(shù)據(jù)寫入輸出流voidwrite(char[]cbuf,intoffset,intlength)throwsIOException//將一個(gè)字符類型的數(shù)組中的從指定位置〔offset〕開(kāi)場(chǎng)的length個(gè)字符寫入到輸出流voidwrite(Stringstring)throwsIOException//將一個(gè)字符串中的字符寫入到輸出流voidwrite(Stringstring,intoffset,iintlength)throwsIOException//將一個(gè)字符串從offset開(kāi)場(chǎng)的length個(gè)字符寫入到輸出流voidclose()throwsIOException//關(guān)閉流釋放內(nèi)存資源voidflush()throwsIOException//將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地節(jié)點(diǎn)流類型類型字符流字節(jié)流File〔文件〕FileReaderFileWriterFileInputStreamFileOutputStreamMemoryArrayCharArrayReaderCharArrayWriterByteArrayInputStreamByteArrayOutputStreamMemoryStringStringReaderStringWriter-Pipe〔管道〕PipedReaderPipedWriterPipedInputStreamPipedOutputStream訪問(wèn)文件FileInputStream和FileOutputStream分別繼承自InputStream和OutputStream,用于向文件中輸入和輸出字節(jié)FileInputStream和FileOutputStream的常用構(gòu)造方法:FileInputStream(Stringname)throwsFileNotFoundExceptionFileInputStream(Filefile)throwsFileNotFoundExceptionFileOutputStream(Stringname)throwsFileNotFoundExceptionFileOutputStream(Filefile)throwsFileNotFoundExceptionFileOutputStream(Filefile,booleanappend)throwsFileNotFoundException:創(chuàng)立一個(gè)向具有指定name的文件中寫入數(shù)據(jù)的輸出文件流。如果第二個(gè)參數(shù)為true,那么將字節(jié)寫入文件末尾處,而不是寫入文件開(kāi)場(chǎng)處importjava.io.*;publicclassTestFileInputStream{publicstaticvoidmain(String[]args){intb=0;FileInputStreamin=null;try{in=newFileInputStream("d:\\java\\io\\TestFileInputStream.java");}catch(FileNotFoundExceptione){System.out.println("找不到指定文件");System.exit(-1);}try{longnum=0;while((b=in.read())!=-1){System.out.print((char)b);num++;}in.close();System.out.println();System.out.println("共讀取了"+num+"個(gè)字節(jié)");}catch(IOExceptione1){System.out.println("文件讀取錯(cuò)誤");System.exit(-1);}}}importjava.io.*;publicclassTestFileOutputStream{publicstaticvoidmain(String[]args){ intb=0; FileInputStreamin=null; FileOutputStreamout=null; try{ in=newFileInputStream("d:/java/HelloWorld.java"); out=newFileOutputStream("d:/java/io/HW.java"); while((b=in.read())!=-1){ out.write(b); } in.close(); out.close(); }catch(FileNotFoundExceptione2){ System.out.println("找不到指定文件");System.exit(-1); }catch(IOExceptione1){ System.out.println("文件復(fù)制錯(cuò)誤");System.exit(-1); } System.out.println("文件已復(fù)制");}}FileReader和FileWriter與FileInputStream和FileOutputStream類似,只是讀取寫出字節(jié)和字符的差異處理流類型處理類型字符流字節(jié)流BufferingBufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStreamFilteringFilterReaderFilterWriterFilterInputStreamFilterOutputStreamConvertingbetweenbytesandcharacterInputStreamReaderOutputStreamWriterObjectSerialization-ObjectInputStreamObjectOutputStreamDataconversion-DataInputStreamDataOutputStreamCountingLineNumberReaderLineNumberInputStreamPeekingaheadPushbackReaderPushbackInputStreamPrintingP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 泵與風(fēng)機(jī)的選型課程設(shè)計(jì)
- 畢業(yè)墻的課程設(shè)計(jì)
- 比較式閱讀策略研究報(bào)告
- 比的應(yīng)用課程設(shè)計(jì)
- 比亞迪品牌營(yíng)銷研究報(bào)告
- 殯葬火化技術(shù)難題研究報(bào)告
- 步行街公共設(shè)施方案
- 噴草合同范本
- 鍋爐中標(biāo)合同范本
- 會(huì)員營(yíng)銷合同范本
- 家風(fēng)家訓(xùn)PPT課件
- 淚道沖洗PPT學(xué)習(xí)教案
- 部編版六年級(jí)語(yǔ)文上冊(cè)詞語(yǔ)表(帶拼音)-六上冊(cè)詞語(yǔ)表連拼音
- 淺談校園影視在學(xué)校教育中的作用
- 無(wú)公害農(nóng)產(chǎn)品查詢
- 試劑、試藥、試液的管理規(guī)程
- 研究生課程應(yīng)用電化學(xué)(課堂PPT)
- 通信綜合網(wǎng)管技術(shù)規(guī)格書doc
- 六宮數(shù)獨(dú)可直接打印共192題
- 班會(huì):如何克服浮躁心理PPT優(yōu)秀課件
- 四宗宗義比較略記
評(píng)論
0/150
提交評(píng)論