已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java題型分布:選擇(20*1)填空(20*1)程序閱讀(5*3)程序填空(10*2)簡答(3*3)編程(8+4+4)(包含一道面向?qū)ο蠛?道算法題目)考點(diǎn)1:1、Java程序的組成、結(jié)構(gòu)Java程序的源程序文件結(jié)構(gòu)如下: 1.package語句,01句,必須放在文件開始,作用是把當(dāng)前文件放入所指向的包中。 2. import語句,0多句,必須放在所有類定義之前,用來引入標(biāo)準(zhǔn)類或已有類。 3.公共類的聲明,01句,文件名必須與公共類的類名完全相同。其他類的聲明,0多句,類定義的個(gè)數(shù)不受限制。 4.接口的聲明,0多句,接口定義的個(gè)數(shù)不受限制。2、 Java Application程序執(zhí)行的入口點(diǎn)main方法是程序執(zhí)行的入口點(diǎn),一個(gè)Java Application程序只能有一個(gè)入口點(diǎn)。方法頭必須按照下面的格式書寫public static void main(String args ) 3、 Java標(biāo)示符的合法非法判斷標(biāo)識(shí)符要滿足如下的規(guī)定 標(biāo)識(shí)符可以由字母、數(shù)字和下劃線(_)、美元符號(hào)($)組合而成 標(biāo)識(shí)符必須以字母、下劃線或美元符號(hào)開頭,不能以數(shù)字開頭4、 Java的數(shù)據(jù)類型 注:String 字符串類變量未初始化時(shí)為NULL5、 各種數(shù)據(jù)類型定義變量,并賦初值。 boolean b = false; char c = A; int i =3; long i = 3L; float f = 3.14f; double d = 3.14; 或 double d = 3.14d or D; String s =a string; byte b = 10 (byte值域被定義為-128127,也就是signed byte)6、 循環(huán)結(jié)構(gòu) (a)while語句: while語句的一般語法格式如下while ( 條件表達(dá)式 )循環(huán)體 注:1.其中條件表達(dá)式的返回值為布爾型,循環(huán)體可以是單個(gè)語句,也可以是復(fù)合語句塊2.while語句的執(zhí)行過程是先判斷條件表達(dá)式的值若為真,則執(zhí)行循環(huán)體,循環(huán)體執(zhí)行完之后再無條件轉(zhuǎn)向條件表達(dá)式再做計(jì)算與判斷3.當(dāng)計(jì)算出條件表達(dá)式為假時(shí),跳過循環(huán)體執(zhí)行while語句后面的語句 (b)do-while語句: do-while語句的一般語法結(jié)構(gòu)如下 do 循環(huán)體 while ( 條件表達(dá)式 ); 注: 1.do-while語句的使用與while語句很類似,不同的是它不像while語句是先計(jì)算條件表達(dá)式的值,而是無條件地先執(zhí)行一遍循環(huán)體,再來判斷條件表達(dá)式。 2.若表達(dá)式的值為真,則再運(yùn)行循環(huán)體,否則跳出do-while循環(huán),執(zhí)行下面的語句。 3.do-while語句的特點(diǎn)是它的循環(huán)體將至少被執(zhí)行一次。 (c)for語句:for語句的一般語法格式如下for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3)循環(huán)體 注:1.表達(dá)式2是返回布爾值的條件表達(dá)式,用來判斷循環(huán)是否繼續(xù)2.表達(dá)式1完成初始化循環(huán)變量和其他變量的工作3.表達(dá)式3用來修整循環(huán)變量,改變循環(huán)條件4.三個(gè)表達(dá)式之間用分號(hào)隔開 for語句的執(zhí)行過程1.首先計(jì)算表達(dá)式1,完成必要的初始化工作2.再判斷表達(dá)式2的值3.若為真,則執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體后再返回表達(dá)式3,計(jì)算并修改循環(huán)條件,這樣一輪循環(huán)就結(jié)束4.第二輪循環(huán)從計(jì)算并判斷表達(dá)式2開始5.若表達(dá)式的值仍為真,則繼續(xù)循環(huán),否則跳出整個(gè)for語句執(zhí)行下面的句子6.for語句的三個(gè)表達(dá)式都可以為空,但若表達(dá)式2也為空,則表示當(dāng)前循環(huán)是一個(gè)無限循環(huán),需要在循環(huán)體中書寫另外的跳轉(zhuǎn)語句終止循環(huán)7、 聲明類的對(duì)象并初始化,訪問類的屬性域和方法的方式。創(chuàng)建類對(duì)象: 類名 新建對(duì)象名 new 構(gòu)造函數(shù)( ); 訪問類的屬性域和方法: 對(duì)象名.屬性名 和對(duì)象名.方法名8、 System.in /System.out System.in “標(biāo)準(zhǔn)”輸入流。(public static final InputStream in) System.out “標(biāo)準(zhǔn)”輸出流。(public static final PrintStream out)9、Java Applet 需加載 java.applet.Applet,圖形界面需加載 java.awt.*,圖形界面事件的處理需要加載 java.awt.event。10、 一個(gè)Applet執(zhí)行中,必須有的屬性項(xiàng)CODE、WIDTH、HEIGHT。11、 Java.io包中實(shí)現(xiàn)DataInput和DataOutput接口的類實(shí)現(xiàn)DataInput接口的類: DataInputStream、ObjectInputStream、RandomAccessFile實(shí)現(xiàn)DataOutput接口的類: DataOutputStream、ObjectOutputStream、RandomAccessFile 12、Java Applet和Java Application的區(qū)別 (1)運(yùn)行方式不同。Java Application是完整的程序,可以獨(dú)立運(yùn)行;Java Applet程序不能單獨(dú) 運(yùn)行,它必須嵌入到用HTML語言編寫的Web頁面中,通過與Java兼容的瀏覽器來控制執(zhí)行。 (2)運(yùn)行工具不同。Java Application程序被編譯以后,用普通的Java解釋器就可以使其邊解釋邊執(zhí)行,而Java Applet必須通過網(wǎng)絡(luò)瀏覽器或者Applet觀察器才能執(zhí)行。 (3)程序結(jié)構(gòu)不同。每個(gè)Java Application程序必定含有一個(gè)并且只有一個(gè)main方法,程序執(zhí)行時(shí),首先尋找main方法,并以此為入口點(diǎn)開始運(yùn)行。含有main方法的那個(gè)類,常被稱為主類,也就是說,Java Application程序都含有一個(gè)主類。而Applet程序則沒有含main方法的主類,這也正是Applet程序不能獨(dú)立運(yùn)行的原因。13、 子類繼承父類的非私有的屬性和方法 Java中的繼承是通過extends關(guān)鍵字來實(shí)現(xiàn)的,在定義類時(shí)使用extends關(guān)鍵字指明新定義類的父類,就在兩個(gè)類之間建立了繼承關(guān)系定義形式 class SubClass extends SuperClass 注:如果沒有extends子句,則該類默認(rèn)為java.lang.Object的子類。所以,Java中,所有的類都是通過直接或間接地繼承java.lang.Object得到的。新定義的類稱為子類,它可以從父類那里繼承所有非private的屬性和方法作為自己的成員。14、 算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符的綜合使用。 算術(shù)運(yùn)算符: +,-,*,/,%,+,- 關(guān)系運(yùn)算符: ,=,=,=,!= 邏輯運(yùn)算符: !,& , | , , &,| 位運(yùn)算符: &,|, , , 賦值運(yùn)算符: = , 擴(kuò)展賦值運(yùn)算符:+=,-=,*=,/=等 條件運(yùn)算符: ?: (例:z=a0?a:-a) 字符串連接運(yùn)算符: + 15、 數(shù)組的定義及引用數(shù)組元素,尤其是最后一個(gè)數(shù)組元素。 一維數(shù)組: 1.一維數(shù)組的聲明方式 type var 或 type var; type指定數(shù)組的基本類型,如 int a; int a1; double b; Mydate c; 2.Java語言中聲明數(shù)組時(shí)不能指定其長度(數(shù)組中元素的個(gè)數(shù)),例如 int a5; /非法 3.所有的數(shù)組下標(biāo)從零開始一維數(shù)組初始化: 1、動(dòng)態(tài)初始化1.數(shù)組定義與為數(shù)組元素分配空間并賦值的操作分開進(jìn)行2.使用運(yùn)算符new來為數(shù)組所要存儲(chǔ)的數(shù)據(jù)分配內(nèi)存,并將它們分配給數(shù)組變量 int a = new int3; a0 = 3; a1 = 9; a2 = 8;2、靜態(tài)初始化 int a = 3, 9, 8; MyDate dates = new MyDate(22, 7, 1964), new MyDate(1, 1, 2000), new MyDate(22, 12, 1964) ;數(shù)組元素的引用 1.定義并用運(yùn)算符new為之分配空間后后,才可以引用數(shù)組中的每個(gè)元素 2.數(shù)組元素的引用方式:arrayNameindex index為數(shù)組元素下標(biāo),可以是整型常量或整型表達(dá)式,如a3 , bi , c6*i 數(shù)組元素下標(biāo)從0開始;長度為n的數(shù)組合法下標(biāo)取值范圍:0 n-1 3.每個(gè)數(shù)組都有一個(gè)屬性length指明它的長度,例如 a.length 指明數(shù)組a的長度(元素個(gè)數(shù))多維數(shù)組 多維數(shù)組實(shí)際上就是“數(shù)組的數(shù)組” 定義多維數(shù)組變量時(shí),要將每維數(shù)放在各自的方括號(hào)中,例如,下面的語句聲明了一名為twoD的二維數(shù)組變量 int twoD = new int45; 該語句分配一個(gè)4行5列數(shù)組并把它分配給數(shù)組twoD 實(shí)際上這個(gè)矩陣表示了int類型數(shù)組的實(shí)現(xiàn)過程 當(dāng)給多維數(shù)組分配內(nèi)存時(shí),只需指定第一個(gè)(即最左邊)維數(shù)的內(nèi)存即可,可單獨(dú)地對(duì)余下的維數(shù)進(jìn)行內(nèi)存分配例如,下面的程序在數(shù)組twoD被定義時(shí)給它的第一個(gè)維數(shù)分配內(nèi)存,對(duì)第二維則是手工分配內(nèi)存int twoD = new int4;int t1 = new int 4; /非法twoD0 = new int5;twoD1 = new int5;twoD2 = new int5;twoD3 = new int5; Java中多維數(shù)組不必須是規(guī)則矩陣形式int tt = new int4; tt0 = new int2;tt1 = new int4;tt2 = new int6;tt3 = new int8;一般不推薦使用不規(guī)則的多維數(shù)組,因?yàn)槿绻盐詹缓眠\(yùn)行過程中可能出錯(cuò)。 多維數(shù)組初始化 靜態(tài)初始化 int intArray = 1, 2, 2, 3, 3, 4, 5; int intArray132 = 1, 2, 2, 3, 4, 5; /illegal 動(dòng)態(tài)初始化 int a = new int45; int b = new int3; b0 = new int2; b1 = new int3; b2 = new int5;16、 類中方法的重載和覆蓋(重寫) 方法重載具體規(guī)范 1、方法的名稱必須相同。 2、方法的參數(shù)必須不同,這里的不同分三種情況: a、參數(shù)個(gè)數(shù)不同,類型無限制; b、參數(shù)個(gè)數(shù)相同,但是參數(shù)類型不同; c、參數(shù)個(gè)數(shù)和類型都相同,但是參數(shù)的順序不同; 3、方法的返回類型和修飾符可以相同,也可以不同。 方法覆蓋:如果在子類中定義一個(gè)方法,其名稱、返回類型及參數(shù)簽名正好與父類中某個(gè)方法的名稱、返回類型及參數(shù)簽名相匹配,那么可以說,子類的方法覆蓋了父類的方法。 子類的方法名稱返回類型及參數(shù)簽名 必須與父類的一致 子類方法不能縮小父類方法的訪問權(quán)限 子類方法不能拋出比父類方法更多的異常 方法覆蓋只存在于子類和父類之間,同一個(gè)類中只能重載 父類的非靜態(tài)方法不能被子類覆蓋為靜態(tài)方法 父類的私有方法不能被子類覆蓋 父類的抽象方法可以被子類通過兩種途徑覆蓋(即實(shí)現(xiàn)和覆蓋) 父類的非抽象方法可以被覆蓋為抽象方法17、 構(gòu)造方法,構(gòu)造函數(shù)的說法 構(gòu)造函數(shù)是一種特殊的方法主要用來在創(chuàng)建對(duì)象時(shí)初始化對(duì)象,即為對(duì)象成員變量賦初始值,總與new運(yùn)算符一起使用在創(chuàng)建對(duì)象的語句中。特別的一個(gè)類可以有多個(gè)構(gòu)造函數(shù),可根據(jù)其參數(shù)個(gè)數(shù)的不同或參數(shù)類型的不同來區(qū)分它們。即構(gòu)造函數(shù)的重載。 使用構(gòu)造函數(shù)時(shí)需要記?。?1.構(gòu)造函數(shù)必須與類同名(如果一個(gè)源文件中有多個(gè)類,那么構(gòu)造函數(shù)必須與公共類同名) 2.每個(gè)類可以有一個(gè)以上的構(gòu)造函數(shù) 3.構(gòu)造函數(shù)可以有0個(gè)、1個(gè)或1個(gè)以上的參數(shù) 4.構(gòu)造函數(shù)沒有返回值 5.構(gòu)造函數(shù)總是伴隨著new操作一起調(diào)用18、 修飾符上的訪問控制符 public private protected 類的修飾符分為訪問控制符和非訪問控制符兩大類。 非訪問控制符:abstract,final 類有兩個(gè)非訪問控制符,abstract 和final 1.abstract類稱為抽象類是它所有子類公共屬性集合,所以使用抽象類提高開發(fā)效率和易維護(hù)。 不能創(chuàng)建abstract 類的實(shí)例,然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類并讓它指向具體子類的一個(gè)實(shí)例。 2.final 類稱為最終類,說明這個(gè)類不可能有子類,通常用來定義有固定作用,用來完成某種標(biāo)準(zhǔn)功能的類。 拓展: 1. final 修飾的變量為最終域,程序中常需要定義各種類型的常量,可以final 來修飾。它在取值在程序的整個(gè)執(zhí)行過程中都不會(huì)過變,想改變final變量的值會(huì)導(dǎo)致一個(gè)編譯錯(cuò)誤。 2.abstract 和final 不能同時(shí)修飾一個(gè)類,因?yàn)閍bstract 類自身沒有具體對(duì)象,需要派生子類后再創(chuàng)建對(duì)象,而final 類沒有子類.同時(shí)修飾就沒有意義。 3. final 修飾的變量為最終域,程序中常需要定義各種類型的常量,可以final 來修飾。它在取值在程序的整個(gè)執(zhí)行過程中都不會(huì)過變,想改變final變量的值會(huì)導(dǎo)致一個(gè)編譯錯(cuò)誤。 4.抽象方法僅有方法頭、沒有具體方法體的實(shí)現(xiàn),如 abstract void performDial ( ) ; abstract方法只有方法頭的聲明,而用一個(gè)分號(hào)來代替方法體的定義。方法體的具體實(shí)現(xiàn),留到各子類在各自的類定義中完成。 abstract方法隱藏具體的細(xì)節(jié)信息,使調(diào)用該方法的程序不必過分關(guān)注類及其子類內(nèi)部的具體狀況。 注意: 所有抽象方法都必須存在于抽象類之中。 但抽象類不一定只能擁有抽象方法,可以包含非抽象的方法。 5. final在方法之前,防止該方法被覆蓋。 final在類之前,標(biāo)是該類不能被繼承。 final在變量之前,定義一個(gè)常量。 6. abstract不能與final并列修飾同一個(gè)類。 abstract不能與private,static,final或native并列修飾同一個(gè)方法。 abstract類中不能有private的成員(包括屬性和方法)。 abstract方法必須在abstract類中。7. static用在變量或方法之前,表明它們是屬于類的。 static修飾的方法為類方法(靜態(tài)方法),修飾的變量為類變量(靜態(tài)變量)。 類變量生存期不依賴于對(duì)象,無需創(chuàng)建實(shí)例對(duì)象,可以直接通過類名訪問。也可以通過該類的實(shí)例對(duì)象訪問任何一個(gè)類的實(shí)例訪問或操作這個(gè)成員,都是對(duì)這同一個(gè)內(nèi)存單元的訪問和操作 類方法可以直接通過類名訪問只能訪問該類的類變量和類方法,不能直接訪問實(shí)例的變量和方法。19、 抽象類與接口的區(qū)別:1. 抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。 2.抽象類中可以有普通成員變量,接口中沒有普通成員變量 3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。 4. 抽象類中的抽象方法的訪問類型可以是public,protected和(默認(rèn)類型,雖然 eclipse下不報(bào)錯(cuò),但應(yīng)該也不行),但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型。 5. 抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法 6. 抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,并且默認(rèn)即為public static final類型。 7. 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類。20、 throws的作用:throws關(guān)鍵字通常被應(yīng)用在聲明方法時(shí),用來指定可能拋出的異常。格式是:方法名(參數(shù))throws 異常類1,異常類2,. java異常處理的throw和throws的區(qū)別 1. 區(qū)別 throws是用來聲明一個(gè)方法可能拋出的所有異常信息,而throw則是指拋出的一個(gè)具體的異常類型。此外throws是將異常聲明但是不處理,而是將異常往上傳,誰調(diào)用我就交給誰處理。 2.分別介紹 throws:用于聲明異常,例如,如果一個(gè)方法里面不想有任何的異常處理,則在沒有任何代碼進(jìn)行異常處理的時(shí)候,必須對(duì)這個(gè)方法進(jìn)行聲明有可能產(chǎn)生的所有異常(其實(shí)就是,不想自己處理,那就交給別人吧,告訴別人我會(huì)出現(xiàn)什么異常,報(bào)自己的錯(cuò),讓別人處理去吧)。 throw:就是自己進(jìn)行異常處理,處理的時(shí)候有兩種方式,要么自己捕獲異常(也就是try catch進(jìn)行捕捉),要么聲明拋出一個(gè)異常(就是throws 異常)。注意:throw一旦進(jìn)入被執(zhí)行,程序立即會(huì)轉(zhuǎn)入異常處理階段,后面的語句就不再執(zhí)行,而且所在的方法不再返回有意義的值。21、 小應(yīng)用程序執(zhí)行 java applet程序必須嵌入到html文件中才能夠執(zhí)行,因此必須編寫相應(yīng)的html文件。下面為Hello.html文件的內(nèi)容: 然后可以通過JDK所提供的命令appletviewer,在命令行下面執(zhí)行java applet程序。如果是在windows操作系統(tǒng)中,就可以在命令提示符下敲入appletviewer Hello.html。Java Applet生命周期:init()、start()、stop()、destroy()方法都是Applet類中已經(jīng)定義的方法,系統(tǒng)根據(jù)上述規(guī)則自動(dòng)執(zhí)行Applet的生命周期。- 考點(diǎn)2: 1、Java關(guān)鍵字 2、 Java變量的作用域: 1.成員變量: 在類體中定義 在整個(gè)類中都有效 2.局部變量: 在方法中定義 方法體中聲明 方法中的形參 只在本方法中有效 注意: 局部變量與類的成員變量同名,則局部變量會(huì)隱藏成員變量,稱為名字隱藏。 若要訪問被隱藏的成員變量,則必須使用this來訪問。 this 用于代表當(dāng)前正在使用或訪問的對(duì)象。 每一個(gè)對(duì)象內(nèi)部都有一個(gè)this變量,用于指明自身地址。3、 Java語言編譯執(zhí)行過程 執(zhí)行分為兩個(gè)階段 1.編譯產(chǎn)生一個(gè)與機(jī)器無關(guān)的字節(jié)碼文件(*.class) 2.運(yùn)行加載字節(jié)碼,由Java的類裝載器校驗(yàn)字節(jié)碼執(zhí)行代碼4、 java運(yùn)算符與表達(dá)式 包含: 算術(shù)運(yùn)算符: +,-,*,/,%,+,- 關(guān)系運(yùn)算符: ,=,=,=,!= 邏輯運(yùn)算符: !,& , | , , &,| 位運(yùn)算符: &,|, , , 賦值運(yùn)算符: = , 擴(kuò)展賦值運(yùn)算符:+=,-=,*=,/=等 字符串連接運(yùn)算符: + 運(yùn)算符的優(yōu)先次序 注意: 1. 自增,自減運(yùn)算符 +,- +x,-x表示在使用x之前,先使x的值加,減 1 . x+,x- 表示在使用x之后,使x的值加,減 1. 2. 算術(shù)混合運(yùn)算的精度 1.精度從”底”到”高”排列的順序是: byte short int long float double 2.Java將按運(yùn)算符兩邊的操作元的最高精度保留結(jié)果的精度, 例如: 5/2的結(jié)果是2,要想得到2.5,必須寫成5.0/2或5.0f/2。 char型數(shù)據(jù)和整型數(shù)據(jù)運(yùn)算結(jié)果的精度是int。5、 流程控制 任何程序都可以且只能由三種基本流程結(jié)構(gòu)構(gòu)成,即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。6、 抽象類 抽象類 (abstract修飾的類) 抽象類必須被繼承。 抽象類不能被直接實(shí)例化(new 創(chuàng)建對(duì)象),抽象類對(duì)象可以引用其子類實(shí)例對(duì)象。 只能作為其它類的父類 抽象方法 (abstract修飾的方法) 抽象方法必須被重寫 抽象方法只有聲明,不能有實(shí)現(xiàn)。 定義了抽象方法的類必須是抽象類。抽象類的一個(gè)例子: abstract class Person public Person(String n) name = n; public abstract String getDescription(); public String getName() return name; private String name; 7、 接口 接口(interface)是抽象方法和常量值得定義的集合。 從本質(zhì)上講,接口第一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn)。其主要作用是可以幫助實(shí)現(xiàn)類似于類的多繼承的功能。 接口定義舉例:public interface Calculate final float PI=3.14159f; /定義用于表示圓周率的常量PI float getArea(float r); /定義一個(gè)用于計(jì)算面積的方法getArea() float getCircumference(float r); /定義一個(gè)用于計(jì)算周長的方法getCircumference()接口特性: 多個(gè)無關(guān)的類可以實(shí)現(xiàn)同一個(gè)接口。 一個(gè)類可以實(shí)現(xiàn)多個(gè)無關(guān)的接口。 與繼承關(guān)系類似,接口與實(shí)現(xiàn)類之間存在多態(tài)性。 實(shí)現(xiàn)上述接口的例子: public class Cire implements Calculate public float getArea(float r) float area=PI*r*r; /計(jì)算圓面積并賦值給變量area return area; /返回計(jì)算后的圓面積public float getCircumference(float r) float circumference=2*PI*r; /計(jì)算圓周長并賦值給變量circumference return circumference; /返回計(jì)算后的圓周長 8、 異常 1.Java異常是Java提供的用于處理程序中錯(cuò)誤的一種機(jī)制。所謂錯(cuò)誤,是在程序運(yùn)行過程中發(fā)生的異常事件,比如除0溢出、數(shù)組越界、文件找不到等,這些事件的發(fā)生將阻礙程序的正常運(yùn)行。 為了加強(qiáng)程序的健壯性和容錯(cuò)性,程序設(shè)計(jì)時(shí),應(yīng)充分考慮可能發(fā)生的異常事件并作出相應(yīng)的處理。 2.Java通過面向?qū)ο蟮姆椒▉硖幚懋惓?。(各種不同的異常事件進(jìn)行分類,把異常事件當(dāng)成對(duì)象來處理) 把生成異常對(duì)象并把它提交給運(yùn)行時(shí)系統(tǒng)的過程稱為拋出(throw)一個(gè)異常。 運(yùn)行時(shí)系統(tǒng)從生成異常的方法開始進(jìn)行回溯,直到找到包含相應(yīng)異常處理的方法為止,這一個(gè)過程稱為捕獲(catch)一個(gè)異常。 3.異常的分類:4. 聲明異常 一個(gè)方法不處理它產(chǎn)生的異常,而是沿著調(diào)用層次向上傳遞,由調(diào)用它的方法來處理這些異常,叫聲明異常。 聲明異常的方法 在可能產(chǎn)生異常的方法名后加上要拋出(throws)的異常的列表。 例子:public class exception1 static void Proc(int sel) throws ArithmeticException, ArrayIndexOutOfBoundsException /聲明異常的方法 System.out.println(“In Situation + sel ); if (sel=0) System.out.println(no Exception caught); return; else if(sel=1) int iArray=new int4; iArray10=3; public static void main(String args) try Proc(0); /此處調(diào)用Proc方法要處理異常 Proc(1); catch(ArrayIndexOutOfBoundsException e) System.out.println(Catch+e); 5.拋出異常 1.所有系統(tǒng)定義的運(yùn)行異常都可以由系統(tǒng)自動(dòng)拋出。 2.用戶程序自定義的異常不可能依靠系統(tǒng)自動(dòng)拋出,必須借助于throw語句來定義何種情況產(chǎn)生此種異常對(duì)應(yīng)的錯(cuò)誤,并應(yīng)拋出這個(gè)異常類的新對(duì)象。 例子: 自定義異常類: 聲明并拋出異常: 6. 異常捕獲和處理 形式: 例子: 9、 字符流與字節(jié)流(Java中包含了多個(gè)流類型來實(shí)現(xiàn)輸入/輸出功能) 字節(jié)流: Java中所有流類型都在java.io包中,分別繼承以下四種抽象流類型。 字節(jié)流 字符流 輸入流 InputStream Reader 輸出流 OutputStream Writer1. 字節(jié)流是一個(gè)字節(jié)序列(數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式),它與外部設(shè)備中的字節(jié)存在著一一對(duì)應(yīng)關(guān)系,也就是說,傳輸過程不存在字符的轉(zhuǎn)換,被讀寫字節(jié)的個(gè)數(shù)與外部設(shè)備中的字節(jié)個(gè)數(shù)是相同的。2. 字符流是一個(gè)字符序列,用于存儲(chǔ)和獲取文本,還可以用于讀取非Java語言生成的文本文件。在字符流中,可按需要進(jìn)行某些字符的轉(zhuǎn)換,在被讀寫字符和外部設(shè)備中的字符之間不存在一一對(duì)應(yīng)關(guān)系,被讀寫字符的個(gè)數(shù)可能與外部設(shè)備中的字符個(gè)數(shù)不一樣。我們?cè)诓僮髯址鞯臅r(shí)候,不關(guān)閉流,我們寫入的數(shù)據(jù)是無法保存的。所以在操作字符流的時(shí)候一定要記得關(guān)閉流。 字符流與字節(jié)流的區(qū)別: 操作字節(jié)流操作時(shí)本身不會(huì)用到緩沖區(qū),是文件本身直接操作,而字節(jié)流在操作時(shí)就使用到了緩沖區(qū)。 字節(jié)流在操作的時(shí)候是直接與文件本身關(guān)聯(lián),不使用緩沖區(qū),字節(jié)直接存到文件中;字符流在操作的時(shí)候是通過緩沖區(qū)與文件操作,字符到緩沖區(qū)然后再到文件中,所以字符流中存在一個(gè)flush()方法來刷新緩沖區(qū)。字符流:10、 編譯與運(yùn)行javac hello.java -編譯java hello -運(yùn)行11、 強(qiáng)制類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換,又叫造型。分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型兩種情況。1. 對(duì)于引用類型來說,什么是強(qiáng)制類型轉(zhuǎn)換呢?簡單地說,就是把父類型轉(zhuǎn)換為子類型,也叫向下轉(zhuǎn)型。 例子: 假設(shè)Student類 是Person類的子類。 Student stunew Student(); Person p1stu;/ 父類Person的引用變量引用子類Student的對(duì)象(向上轉(zhuǎn)型) Student s(Student)p1;/父類對(duì)象賦給子類變量(向下轉(zhuǎn)型) 向下轉(zhuǎn)型,必須確保該父類變量目前引用的是子類對(duì)象;必須使用強(qiáng)制類型轉(zhuǎn)換。 拓展:對(duì)象轉(zhuǎn)型 2.在Java中整型、實(shí)型、字符型被視為簡單數(shù)據(jù)類型,這些類型由低級(jí)到高級(jí)分別為:(byte,short,char,int,long,float,double)。對(duì)于boolean類型,是不可以轉(zhuǎn)換為其它的數(shù)據(jù)類型的。byte,short,char之間是不會(huì)相互轉(zhuǎn)化的,它們?nèi)咴谟?jì)算時(shí)首先會(huì)轉(zhuǎn)換為int類型,再計(jì)算。簡單數(shù)據(jù)類型之間的轉(zhuǎn)換又可以分為:1、 低級(jí)到高級(jí)的自動(dòng)類型轉(zhuǎn)換 例子:byte b; int i=b; long l=b;2、 高級(jí)到低級(jí)的強(qiáng)制類型轉(zhuǎn)換 例子:int i = 99; byte b =(byte)i; char c = (char)i;12、 包(package)用途:1. 管理類名空間2. 解決類名重復(fù)沖突13、 輸入流與輸出流 Java中把不同的輸入、輸出源(鍵盤、文件、網(wǎng)絡(luò)連接等)抽象表述為“流”(stream)。1.兩種基本流: 輸入流:只能從中讀取數(shù)據(jù),不能向其寫入數(shù)據(jù)。 輸出流:只能向其寫入數(shù)據(jù),不能從中讀取數(shù)據(jù)。2. 輸入輸出流的基類 InputStream和OutputStream。它們是抽象類,不能直接使用。 InputStream類的方法read():從流中讀入數(shù)據(jù),提供三種從流中讀數(shù)據(jù)方法int read():讀一個(gè)整數(shù)int read(byte b):讀多個(gè)字節(jié)到數(shù)組中int read(byte b, int off, int len):將輸入流中最多l(xiāng)en個(gè)數(shù)據(jù)字節(jié)讀入 byte 數(shù)組。skip():跳過流中若干字節(jié)數(shù)available():返回流中可用字節(jié)數(shù)mark():在流中標(biāo)記一個(gè)位置reset():返回標(biāo)記過得位置markSupport():測試此輸入流是否支持標(biāo)記和復(fù)位操作close():關(guān)閉流 OutputStream類的方法write(int b):將一個(gè)整數(shù)輸出到流中write(byte b):將數(shù)組中的數(shù)據(jù)輸出到流中write(byte b, int off, int len):將數(shù)組b中從off指定的位置開始len長度的數(shù)據(jù)輸出到流中flush():將緩沖區(qū)中的數(shù)據(jù)強(qiáng)制送出close():關(guān)閉流 PrintStream類的方法有write, flush, checkError,print, println,close其中println,不屬于OutputStream類,可以輸出多種形式的數(shù)據(jù),例如println(String s), println(char c)等。 3.文件I/O: File fp=new File(“tempfile.txt”); 對(duì)文件操作要定義文件流 FileInputStream類用來打開一個(gè)輸入文件 FileInputStream in=new FileInputStream(fp); FileOutputStream類用來打開一個(gè)輸出文件 FileOutputStream out= new FileOutputStream(fp);例子:import java.io.*; public class filestream public static void main(String args) try File inFile=new File(”file1.txt); File outFile=new File(”file2.txt); FileInputStream fis=new FileInputStream(inFile); FileOutputStream fos=new FileOutputStream(outFile); int c; while(c=fis.read()!=-1) fos.write(c); fis.close(); fos.close(); catch(FileNotFoundException e) System.out.println(FileStreamsTest: +e); catch(IOException e) System.err.println(FileStreamsTest: +e); 4.數(shù)據(jù)輸入輸出流 文件流和緩沖區(qū)流的處理對(duì)象是字節(jié)或字節(jié)數(shù)組,利用數(shù)據(jù)輸入輸出流可以實(shí)現(xiàn)對(duì)文件的不同數(shù)據(jù)類型的讀寫。 對(duì)應(yīng)類:DataInputStream、DataOutputStream一種較為高級(jí)的數(shù)據(jù)輸入輸出方式除了字節(jié)和字節(jié)數(shù)組,還可以處理int、float、boolean等類型還可以用readLine方法讀取一行信息可使用的方法write, writeBoolean , read, readByte 等。方法FileOutputStream fos = newFileOutputStream(file2.txt);DataOnputStream dis = new DataOnputStream(fos);數(shù)據(jù)輸出流可以是一個(gè)已經(jīng)建立好的輸入數(shù)據(jù)流對(duì)象,例如網(wǎng)絡(luò)的連結(jié)、文件等。例子:class datainput_output public static void main(String args) throws IOException FileOutputStream fos=new FileOutputStream(“a.txt”); DataOutputStream dos=new DataOutputStream (fos); try dos.writeBoolean(true); dos.writeByte(byte)123); dos.writeChar(J); dos.writeDouble(3.141592654); dos.writeFloat(2.7182f); dos.writeInt(1234567890); dos.writeLong(998877665544332211L); dos.writeShort(short)11223); finally dos.close(); DataInputStream dis=new DataInputStream( new FileInputStream(”a.txt); try System.out.println(t +dis.readBoolean(); System.out.println(t +dis.readByte(); System.out.println(t +dis.readChar(); System.out.println(t +dis.readDouble(); System.out.println(t +dis.readFloat(); System.out.println(t +dis.readInt(); System.out.println(t +dis.readLong(); System.out.println(t +dis.readShort(); finallydis.close(); 5. 緩沖區(qū)流 增加緩沖區(qū)流,減少訪問硬盤的次數(shù),提高效率 BufferedInputStream和BufferedOutputStream將它們與文件流相接FileInputStream in = new FileInputStream(“file1.txt”);BufferedInputStream bin = new BufferedInputStream(in, 256) int len; byte bArray = new byte256;len = bin.read(bArray);(len中得到是長度,bArray中得到的是數(shù)據(jù)) 6. 隨機(jī)存取文件類RandomAccessFile, 實(shí)現(xiàn)對(duì)文件的隨機(jī)讀寫操作。RandomAccessFile包含InputStream的三個(gè)read方法,也包含OutputStream的三個(gè)write方法。同時(shí)RandomAccessFile還包含一系列的readXxx和writeXxx方法完成輸入輸出。隨機(jī)文件操作的方法: readXXX()或writeXXX() skipBytes() 將指針向下移動(dòng)若干字節(jié) seek() 將指針調(diào)到所需位置 利用seek(long pos)方法查找隨機(jī)文件中的信息 getFilePointer() 返回指針當(dāng)前位置 length() 返回文件長度7. 節(jié)點(diǎn)流和處理流 按照流能否直接與特定的地方(如磁盤、內(nèi)存、設(shè)備等)相連,分為節(jié)點(diǎn)流與處理流。 節(jié)點(diǎn)流:可以從或向一個(gè)特定的地方(節(jié)點(diǎn))讀寫數(shù)據(jù)。如文件流 FileReader. 處理流:是對(duì)一個(gè)已存在的流的連接和封裝,通過所封裝的流的功能調(diào)用實(shí)現(xiàn)數(shù)據(jù)讀寫功能。處理流又稱為過濾流,如緩沖處理流 BufferedReader. 節(jié)點(diǎn)流與處理流的關(guān)系: 節(jié)點(diǎn)流直接與節(jié)點(diǎn)(如文件)相連,而處理流對(duì)節(jié)點(diǎn)流或其他處理流進(jìn)一步進(jìn)行處理(如緩
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 最大子段和算法課程設(shè)計(jì)
- 小兔飼養(yǎng)課程設(shè)計(jì)圖
- 2024年山東省建筑安全員-B證考試題庫附答案
- 社會(huì)培訓(xùn)課程設(shè)計(jì)
- 電子拔河游戲課程設(shè)計(jì)
- 程序開發(fā)培訓(xùn)課程設(shè)計(jì)
- 物流公司課程設(shè)計(jì)
- 稅務(wù)課課程設(shè)計(jì)范文
- 給鴨子洗澡課程設(shè)計(jì)
- 最長公共子串課程設(shè)計(jì)
- 3500常用字帶拼音
- 安規(guī)PIN腳尺寸
- 工程部獎(jiǎng)懲制度
- 出境竹木草制品生產(chǎn)企業(yè)衛(wèi)生防疫管理手冊(cè)
- 承建紅磚燒成隧道窯合同協(xié)議書范本模板
- 大班上學(xué)期周計(jì)劃1—20周精編版
- 三年級(jí)上冊(cè)數(shù)學(xué)試卷附加題解析
- 拌和站危險(xiǎn)源清單及控制措施
- 化驗(yàn)室常用電熱設(shè)備PPT課件
- 沈晴霓《操作系統(tǒng)與虛擬化安全》courera課程答案總結(jié)
- 工程掛靠協(xié)議書模板
評(píng)論
0/150
提交評(píng)論