全國二級Java考試中的幾個(gè)難點(diǎn)_第1頁
全國二級Java考試中的幾個(gè)難點(diǎn)_第2頁
全國二級Java考試中的幾個(gè)難點(diǎn)_第3頁
全國二級Java考試中的幾個(gè)難點(diǎn)_第4頁
全國二級Java考試中的幾個(gè)難點(diǎn)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/21全國二級全國二級Java考試中的幾個(gè)難點(diǎn)考試中的幾個(gè)難點(diǎn) 輸入輸出流和文件處理輸入輸出流和文件處理 Java的多線程機(jī)制的多線程機(jī)制 AppletApplet類與類與AppletApplet小程序小程序 Java的異常處理的異常處理 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/221 輸入輸出流和文件處理輸入輸出流和文件處理1. 1 流的概念流的概念流流是指在計(jì)算機(jī)的輸入與輸出之間是指在計(jì)算機(jī)的輸入與輸出之間運(yùn)動(dòng)的數(shù)據(jù)的運(yùn)動(dòng)的數(shù)據(jù)的序列序列。輸入流代表從外設(shè)流入計(jì)算機(jī)的數(shù)據(jù)序列,。輸入流代表從外設(shè)流入計(jì)算機(jī)的數(shù)據(jù)序列,輸出流代表從計(jì)算機(jī)流向

2、外設(shè)的數(shù)據(jù)序列。輸出流代表從計(jì)算機(jī)流向外設(shè)的數(shù)據(jù)序列。流的最大特點(diǎn)是:流的最大特點(diǎn)是:數(shù)據(jù)的獲取和發(fā)送均按數(shù)據(jù)序數(shù)據(jù)的獲取和發(fā)送均按數(shù)據(jù)序列順序進(jìn)行列順序進(jìn)行。Java中的流分為兩種(被抽象為四個(gè)類):中的流分為兩種(被抽象為四個(gè)類): 字節(jié)流字節(jié)流: InputStream類和類和OutputStream類類 字符流字符流: Reader類和類和 Writer類類 字符流比字節(jié)流更有效。字符流比字節(jié)流更有效。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/231. 字節(jié)流字節(jié)流 從抽象類從抽象類InputStream和和OutputStream派生出來的派生出來的一系列類,這類流以字節(jié)一系列

3、類,這類流以字節(jié)(byte)為基本處理單位。為基本處理單位。 字節(jié)流類字節(jié)流類功能功能FileOutputStream寫入文件的輸出流寫入文件的輸出流FileInputStream從文件讀入的輸入流從文件讀入的輸入流DataOutputStream包含了寫包含了寫Java標(biāo)準(zhǔn)數(shù)據(jù)類型的輸出流標(biāo)準(zhǔn)數(shù)據(jù)類型的輸出流DataInputStream包含了讀取包含了讀取Java標(biāo)準(zhǔn)數(shù)據(jù)類型的輸入流標(biāo)準(zhǔn)數(shù)據(jù)類型的輸入流BufferOutputStream緩沖輸出流緩沖輸出流ByteArrayInputStream從字節(jié)數(shù)組讀取的輸入流從字節(jié)數(shù)組讀取的輸入流ByteArrayOutputStream寫入字節(jié)

4、數(shù)組的輸出流寫入字節(jié)數(shù)組的輸出流PrintStream包含最常見的包含最常見的Print()()和和Println()()的輸出流的輸出流 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/24基本輸入流類基本輸入流類InputStream的常用方法的常用方法 從流中讀取數(shù)據(jù):從流中讀取數(shù)據(jù):int read( ); /讀取一個(gè)字節(jié),返回值為所讀的字節(jié)讀取一個(gè)字節(jié),返回值為所讀的字節(jié) int read( byte b ); 讀取多個(gè)字節(jié),放置到字節(jié)數(shù)組讀取多個(gè)字節(jié),放置到字節(jié)數(shù)組b中,通常讀取的字節(jié)中,通常讀取的字節(jié) 數(shù)量為數(shù)量為b的長度,返回值為實(shí)際讀取的字節(jié)的數(shù)量的長度,返回值為實(shí)際讀取的字節(jié)

5、的數(shù)量int read( byte b , int off, int len ); 讀取讀取len個(gè)字節(jié),放置到以下標(biāo)個(gè)字節(jié),放置到以下標(biāo)off開始字節(jié)數(shù)組開始字節(jié)數(shù)組b中,中, 返回值為實(shí)際讀取的字節(jié)的數(shù)量返回值為實(shí)際讀取的字節(jié)的數(shù)量 int available( ); /返回值為流中尚未讀取的字節(jié)的數(shù)量返回值為流中尚未讀取的字節(jié)的數(shù)量long skip( long n ); /讀指針跳過讀指針跳過n個(gè)字節(jié)不讀,返回值個(gè)字節(jié)不讀,返回值為實(shí)際跳過的字節(jié)數(shù)量為實(shí)際跳過的字節(jié)數(shù)量 關(guān)閉流關(guān)閉流: close( ); /流操作完畢后必須關(guān)閉流操作完畢后必須關(guān)閉 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程20

6、21/4/25基本輸出流類基本輸出流類OutputStream 的常用方法的常用方法 輸出數(shù)據(jù):輸出數(shù)據(jù):void write( int b ); /往流中寫一個(gè)字節(jié)往流中寫一個(gè)字節(jié)bvoid write( byte b ); /往流中寫一個(gè)字節(jié)數(shù)組往流中寫一個(gè)字節(jié)數(shù)組bvoid write( byte b , int off, int len ); 把字節(jié)數(shù)組把字節(jié)數(shù)組b中從下標(biāo)中從下標(biāo)off開始、長度為開始、長度為len的字節(jié)寫入流中的字節(jié)寫入流中 flush( ) /刷空輸出流,并輸出所有被緩存的字節(jié)刷空輸出流,并輸出所有被緩存的字節(jié) 由于某些流支持緩存功能,該方法將把緩存中所有由于某些

7、流支持緩存功能,該方法將把緩存中所有內(nèi)容強(qiáng)制輸出到流中。內(nèi)容強(qiáng)制輸出到流中。 關(guān)閉流關(guān)閉流: close( ); /流操作完畢后必須關(guān)閉流操作完畢后必須關(guān)閉 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/262 字符流字符流 從抽象類從抽象類Reader和和Writer派生出的一系列子類,這派生出的一系列子類,這類流以類流以16位的位的Unicode碼碼表示的字符(一個(gè)字符由表示的字符(一個(gè)字符由兩個(gè)字節(jié)組成)為基本處理單位。兩個(gè)字節(jié)組成)為基本處理單位。常用字符流子類和功能常用字符流子類和功能InputStreamReader將字節(jié)轉(zhuǎn)換為字符的輸入流將字節(jié)轉(zhuǎn)換為字符的輸入流OutputStr

8、eamWriter將字節(jié)轉(zhuǎn)換為字符的輸出流將字節(jié)轉(zhuǎn)換為字符的輸出流FileReader從文件讀入的輸入流從文件讀入的輸入流FileWriter寫入文件的輸出流寫入文件的輸出流CharArrayReader從字符數(shù)組讀取的輸入流從字符數(shù)組讀取的輸入流CharArrayWriter寫入字符數(shù)組的輸出流寫入字符數(shù)組的輸出流StringReader從字符數(shù)串讀取的輸入流從字符數(shù)串讀取的輸入流StringWriter寫入字符串的輸出流寫入字符串的輸出流 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/271.2 基本流基本流1. 鍵盤輸入和格式化輸出鍵盤輸入和格式化輸出 Java有有3個(gè)內(nèi)置的標(biāo)準(zhǔn)流對象:

9、個(gè)內(nèi)置的標(biāo)準(zhǔn)流對象: 1)標(biāo)準(zhǔn)輸入流標(biāo)準(zhǔn)輸入流System.in: 用來讀取用戶從鍵盤的輸入用來讀取用戶從鍵盤的輸入 2)標(biāo)準(zhǔn)輸出流標(biāo)準(zhǔn)輸出流System.out: 用來在屏幕上顯示信息用來在屏幕上顯示信息 3)標(biāo)準(zhǔn)輸出流標(biāo)準(zhǔn)輸出流System.err: 用來顯示出錯(cuò)信息用來顯示出錯(cuò)信息(1)鍵盤輸入:)鍵盤輸入: 使用使用System.in對象的對象的read()方法()方法 例:例: char c=(char)System.in.read( );使用使用InputStreamReader 、BufferReader流類流類例:例: InputStreamReader isr=new Inp

10、utStreamReader(System.in); BufferReader br=new BufferReader(isr); 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/28(2)格式化輸出)格式化輸出用用Java的標(biāo)準(zhǔn)輸出的標(biāo)準(zhǔn)輸出System.out,可以輸出不同類,可以輸出不同類型的對象:型的對象: 例:例:Int a=20; System.out .print(a) System.out .println(“大家好大家好”) /加換行加換行 用用java.text包中的包中的NumberFormat類可以控制顯類可以控制顯示格式示格式,有三種方法:,有三種方法:NumberFo

11、rmat.getNumberInstance( ) /附加逗號附加逗號NumberFormat.getCurrencyInstance( ) /貨幣符號貨幣符號NumberFormat.getPercentInstance( ) /百分號百分號 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/291.3 文件類文件類1. Java程序的文件與目錄管理程序的文件與目錄管理 Java.io包中的包中的File類類專門用來管理磁盤文件和目專門用來管理磁盤文件和目錄。每個(gè)錄。每個(gè)File類的對象表示一個(gè)磁盤文件或目錄,類的對象表示一個(gè)磁盤文件或目錄,對象屬性中包含名稱、長度、所含文件個(gè)數(shù)等信對象屬性中包

12、含名稱、長度、所含文件個(gè)數(shù)等信息。息。(1)創(chuàng)建)創(chuàng)建File類對象的三種方法:類對象的三種方法:File(String path); 指明磁盤文件或目錄名及其路徑指明磁盤文件或目錄名及其路徑 注意:目錄分隔符用注意:目錄分隔符用System.dirSep表示表示 如:如:File f1=new File(“c:”+ System.dirSep+”sj”)File(String path, String name);文件或目錄的路徑文件或目錄的路徑文件或目錄名文件或目錄名 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/210File(File dir, String name); (2)獲取文

13、件或目錄屬性)獲取文件或目錄屬性已經(jīng)存在的磁盤目錄已經(jīng)存在的磁盤目錄boolean exists( )若文件或目錄存在則返回若文件或目錄存在則返回trueboolean isFile( )若對象代表有效文件則返回若對象代表有效文件則返回trueboolean isDirectory( ) 若對象代表有效目錄則返回若對象代表有效目錄則返回trueString getName( )返回文件名或目錄名返回文件名或目錄名String getPath( )返回文件或目錄的路徑返回文件或目錄的路徑long length( )返回文件的字節(jié)數(shù)返回文件的字節(jié)數(shù)boolean canRead( )若文件為可讀文

14、件則返回若文件為可讀文件則返回trueboolean canWrite( )若文件為可寫文件則返回若文件為可寫文件則返回trueboolean equals(File f ) 若兩個(gè)文件對象相同則返回若兩個(gè)文件對象相同則返回trueString list( )將目錄中所有文件名存在數(shù)組中返回將目錄中所有文件名存在數(shù)組中返回 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/211(3)文件或目錄的操作)文件或目錄的操作注意:注意:由于由于Java Applet程序是從網(wǎng)絡(luò)上下載到本程序是從網(wǎng)絡(luò)上下載到本地機(jī)器運(yùn)行的,不可知也不可控,所以地機(jī)器運(yùn)行的,不可知也不可控,所以Java的的安全機(jī)制禁止安全

15、機(jī)制禁止Java Applet程序訪問和存取本地程序訪問和存取本地文件,如果試圖在文件,如果試圖在Java Applet程序中使用文件程序中使用文件操作,則將引發(fā)操作,則將引發(fā)Java的安全性異常。的安全性異常。Boolean renameTo(File newFile)將文件重命名Void delete( )將當(dāng)前文件刪除Boolean mkdir( )創(chuàng)建當(dāng)前目錄的子目錄文件文件操作操作例子例子 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2122. 寫文本文件寫文本文件方法一方法一:用:用FileOutputStream打開文件打開文件my.txt,然后,然后用用PrintStream

16、 對象對象p的的println方法把字符串寫入方法把字符串寫入文件中。文件中。例:例:FileOutputStream fout=new FileOutputStream(“my.txt”)PrintStream p=new PrintStream(fout);p.println(“要寫入文本文件中的內(nèi)容要寫入文本文件中的內(nèi)容”);p.close();寫文本例子寫文本例子1 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/213方法二方法二:用用FileWriter打開文件打開文件myf.txt,又創(chuàng)建,又創(chuàng)建了文本輸出流了文本輸出流out,然后用,然后用out 的的print(或者(或者pri

17、ntln)方法把字符串寫入文件方法把字符串寫入文件中。中。 例:例: FileWriter fw= new FileWriter(“myf.txt”); PrintWriter out=new PrintWriter(fw); out.print(“要寫入文本文件中的內(nèi)容要寫入文本文件中的內(nèi)容”); out.close(); /關(guān)于輸出關(guān)于輸出 fw.close(); /關(guān)閉文件關(guān)閉文件寫文本例子寫文本例子2 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2143. 讀文本文件讀文本文件方法一方法一:用:用FileInputStream打開文件打開文件my.txt,然后,然后建立建立DataI

18、nputStream的的 對象對象in(文件流),使用(文件流),使用in的的readLine()方法以一行為單位讀出()方法以一行為單位讀出my.txt文文件中的所有字符串。件中的所有字符串。例:例:FileInputStream fs=new FileInputStream(“my.txt”)DataInputStream in=new DataInputStream(fs);while(in.available( )!=0) System.out.println( in.readLine() );in.close(); /關(guān)閉輸入流關(guān)閉輸入流讀文本例子讀文本例子1 淮海工學(xué)院淮海工學(xué)院

19、計(jì)算機(jī)課程2021/4/215方法二方法二:用:用FileReader打開文件打開文件myf.txt,然后用,然后用BufferedReader類的對象類的對象br作為文件流,用作為文件流,用br 的的readline()讀取文件中的字符串。()讀取文件中的字符串。 例:例: FileReader fr= new FileReader (“myf.txt”); BufferedReader br=new BufferedReader(fr);String record=new String( );Int recCount=0;While (record=br.readLine()!=null)

20、 recCount+; System.out.println(recCount+”:”+ record); br.close(); /關(guān)于緩存關(guān)于緩存 fr.close(); /關(guān)閉文件關(guān)閉文件讀文本例子讀文本例子2 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2164. 程序?qū)ξ募碾S機(jī)訪問程序?qū)ξ募碾S機(jī)訪問 用用RandomAccessFile類可以實(shí)現(xiàn)對文件的隨機(jī)讀寫類可以實(shí)現(xiàn)對文件的隨機(jī)讀寫操作,即可以在文件的任意位置執(zhí)行數(shù)據(jù)讀寫;操作,即可以在文件的任意位置執(zhí)行數(shù)據(jù)讀寫;創(chuàng)建創(chuàng)建RandomAccessFile的對象的對象例例:File mf= new File (“myf.tx

21、t”); RandomAccessFile myRAF= new RandomAccessFile (mf, ”rw”); 訪問模式:訪問模式:rw: 可讀、可寫可讀、可寫 r: 只讀只讀作為數(shù)據(jù)作為數(shù)據(jù)源的文件源的文件 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/217 對文件進(jìn)行讀寫操作對文件進(jìn)行讀寫操作 RandomAccessFile類實(shí)現(xiàn)了類實(shí)現(xiàn)了DataInput和和 DataOutput接口,在讀接口,在讀/寫時(shí)具備強(qiáng)大的含類型寫時(shí)具備強(qiáng)大的含類型轉(zhuǎn)換的輸入轉(zhuǎn)換的輸入/輸出功能;輸出功能; RandomAccessFile類的所有方法都有可能拋出類的所有方法都有可能拋出IOEx

22、ception異常,在利用它實(shí)現(xiàn)文件操作時(shí)需異常,在利用它實(shí)現(xiàn)文件操作時(shí)需要將相關(guān)語句放在要將相關(guān)語句放在try塊中,并配上塊中,并配上catch塊來處塊來處理異常。理異常。文件訪問例子文件訪問例子 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2182 Java的多線程機(jī)制的多線程機(jī)制2.1 Java中的線程中的線程1. 程序、進(jìn)程與線程的區(qū)別程序、進(jìn)程與線程的區(qū)別線程是比進(jìn)程更小的執(zhí)行單位,線程是比進(jìn)程更小的執(zhí)行單位,一個(gè)進(jìn)程在執(zhí)行過程中可以一個(gè)進(jìn)程在執(zhí)行過程中可以產(chǎn)生多個(gè)線程,每個(gè)線程有自己的產(chǎn)生、存在、消亡的過程。產(chǎn)生多個(gè)線程,每個(gè)線程有自己的產(chǎn)生、存在、消亡的過程。線程間可以共享相同

23、的內(nèi)存單元線程間可以共享相同的內(nèi)存單元,實(shí)現(xiàn)數(shù)據(jù)交換、實(shí)時(shí)通信,實(shí)現(xiàn)數(shù)據(jù)交換、實(shí)時(shí)通信和同步操作。和同步操作。進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行過程進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行過程(放電影),(放電影),對應(yīng)著代碼加載、對應(yīng)著代碼加載、執(zhí)行到執(zhí)行完畢的全過程。每一個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)執(zhí)行到執(zhí)行完畢的全過程。每一個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間、一組系統(tǒng)資源。在進(jìn)程概念中,每一個(gè)進(jìn)程的內(nèi)部數(shù)存空間、一組系統(tǒng)資源。在進(jìn)程概念中,每一個(gè)進(jìn)程的內(nèi)部數(shù)據(jù)和狀態(tài)都是完全獨(dú)立的。據(jù)和狀態(tài)都是完全獨(dú)立的。程序是一段靜態(tài)的代碼,程序是一段靜態(tài)的代碼,是應(yīng)用軟件執(zhí)行的藍(lán)本是應(yīng)用軟件執(zhí)行的藍(lán)本(電影膠片)(電影膠片)。 淮

24、海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/219 Java的多線程的多線程 Java內(nèi)在支持多線程,內(nèi)在支持多線程,它的所有類都是在多線程下它的所有類都是在多線程下定義的,定義的,Java利用多線程可以開發(fā)能同時(shí)處理多個(gè)利用多線程可以開發(fā)能同時(shí)處理多個(gè)任務(wù)的功能強(qiáng)大的應(yīng)用程序。任務(wù)的功能強(qiáng)大的應(yīng)用程序。 Java程序通過程序通過流控制流控制來執(zhí)行來執(zhí)行程序流程序流,程序中單個(gè)順程序中單個(gè)順序的流控制稱為線程序的流控制稱為線程,多線程則指的是在單個(gè)程序多線程則指的是在單個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程,執(zhí)行不同的任務(wù)中可以同時(shí)運(yùn)行多個(gè)不同的線程,執(zhí)行不同的任務(wù)。多線程意味著一個(gè)程序的多行語句

25、可以看上去幾乎多線程意味著一個(gè)程序的多行語句可以看上去幾乎在同一時(shí)間內(nèi)同時(shí)運(yùn)行。在同一時(shí)間內(nèi)同時(shí)運(yùn)行。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/220 使用多線程的好處:使用多線程的好處: 使使UI交互的響應(yīng)更塊交互的響應(yīng)更塊 充分利用多處理器系統(tǒng)充分利用多處理器系統(tǒng) 簡化建模簡化建模 執(zhí)行異步和后臺處理執(zhí)行異步和后臺處理 Java中的線程由三部分組成中的線程由三部分組成: 1. 虛擬的虛擬的CPU,封裝在,封裝在java.lang.Thread類中類中2. CPU所執(zhí)行的代碼所執(zhí)行的代碼,傳遞給,傳遞給Thread類類3. CPU所處理的數(shù)據(jù)所處理的數(shù)據(jù),傳遞給,傳遞給Thread類類

26、 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/221Java中的線程多任務(wù)示意圖中的線程多任務(wù)示意圖操作系統(tǒng) 共享內(nèi)存局部變量Java虛擬機(jī)應(yīng)用程序2應(yīng)用程序1線程1線程2線程3局部變量局部變量 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2222.2 線程的狀態(tài)與生命周期線程的狀態(tài)與生命周期新建新建其他阻塞其他阻塞終止終止運(yùn)行運(yùn)行等待阻塞等待阻塞對象鎖阻塞對象鎖阻塞可運(yùn)行可運(yùn)行start()sleep()時(shí)間到獲得鎖wait()scheduler()yield()sleep()或join()run()方法結(jié)束synchronizednotify()notifyAll()Interrupt

27、() 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/223(1)創(chuàng)建狀態(tài))創(chuàng)建狀態(tài)(new Thread)執(zhí)行下列語句時(shí),線程就處于創(chuàng)建狀態(tài):執(zhí)行下列語句時(shí),線程就處于創(chuàng)建狀態(tài):Thread myThread = new Thread ( );當(dāng)一個(gè)線程處于創(chuàng)建狀態(tài)時(shí),它僅僅是一當(dāng)一個(gè)線程處于創(chuàng)建狀態(tài)時(shí),它僅僅是一個(gè)空的線程對象,系統(tǒng)不為它分配資源。個(gè)空的線程對象,系統(tǒng)不為它分配資源。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/224(2) 可運(yùn)行狀態(tài)可運(yùn)行狀態(tài)( Runnable )Thread myThread = new Thread ( );myThread.start( );當(dāng)一

28、個(gè)線程處于可運(yùn)行狀態(tài)時(shí),系統(tǒng)為這個(gè)線程分當(dāng)一個(gè)線程處于可運(yùn)行狀態(tài)時(shí),系統(tǒng)為這個(gè)線程分配了它需的系統(tǒng)資源,這樣該線程處于運(yùn)行就緒狀配了它需的系統(tǒng)資源,這樣該線程處于運(yùn)行就緒狀態(tài),系統(tǒng)中可以同時(shí)有多個(gè)線程處于態(tài),系統(tǒng)中可以同時(shí)有多個(gè)線程處于Runnable 狀態(tài)。狀態(tài)。(3) 運(yùn)行狀態(tài)(運(yùn)行狀態(tài)(Running) 是線程占有是線程占有CPU并實(shí)際運(yùn)行的狀態(tài)。并實(shí)際運(yùn)行的狀態(tài)。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/225 ( 4) 阻塞狀態(tài)(阻塞狀態(tài)(Blocked) 阻塞狀態(tài)也稱為不可運(yùn)行狀態(tài)。因?yàn)槟撤N原因(輸入阻塞狀態(tài)也稱為不可運(yùn)行狀態(tài)。因?yàn)槟撤N原因(輸入/輸輸出、等待消息或其它阻塞情

29、況),系統(tǒng)不能執(zhí)行線程的狀出、等待消息或其它阻塞情況),系統(tǒng)不能執(zhí)行線程的狀態(tài)。這時(shí)即使處理器空閑,也不能執(zhí)行該線程。態(tài)。這時(shí)即使處理器空閑,也不能執(zhí)行該線程。進(jìn)入不可運(yùn)行狀態(tài)的原因有如下幾條:進(jìn)入不可運(yùn)行狀態(tài)的原因有如下幾條:1) 調(diào)用了調(diào)用了sleep()方法,休眠時(shí)間到即進(jìn)入可運(yùn)行狀()方法,休眠時(shí)間到即進(jìn)入可運(yùn)行狀態(tài)態(tài);2) 調(diào)用了調(diào)用了t.join()方法()方法,當(dāng)當(dāng)t線程結(jié)束或等待時(shí)間線程結(jié)束或等待時(shí)間 到即進(jìn)入可運(yùn)行狀態(tài);到即進(jìn)入可運(yùn)行狀態(tài);3) 為等候一個(gè)條件變量,線程調(diào)用為等候一個(gè)條件變量,線程調(diào)用wait()方法()方法;4) 輸入輸出流中發(fā)生線程阻塞輸入輸出流中發(fā)生線程

30、阻塞; 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/226線程的終止一般可通過兩種方法實(shí)現(xiàn):線程的終止一般可通過兩種方法實(shí)現(xiàn): 自然撤消自然撤消(線程執(zhí)行完)(線程執(zhí)行完) 被停止被停止(調(diào)用(調(diào)用stop( )方法)方法) 目前不推薦通過調(diào)用目前不推薦通過調(diào)用stop()來終止線程的執(zhí)行,來終止線程的執(zhí)行,而是讓線程執(zhí)行完。而是讓線程執(zhí)行完。(5) 死亡狀態(tài)(死亡狀態(tài)(Dead)使用線程時(shí)要注意線程的同步,可以用使用線程時(shí)要注意線程的同步,可以用synchronized來修飾那些不能被中途打擾的方法。來修飾那些不能被中途打擾的方法。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2272.

31、3 如何在程序中實(shí)現(xiàn)多線程如何在程序中實(shí)現(xiàn)多線程1. 創(chuàng)建用戶自定義的一個(gè)線程子類創(chuàng)建用戶自定義的一個(gè)線程子類 即即創(chuàng)建創(chuàng)建Thread類的子類類的子類, 繼承線程類繼承線程類ThreadThread并重寫其并重寫其中的方法中的方法 runrun(),(), Thread類綜合了類綜合了Java程序中一程序中一個(gè)線程需要擁有的屬性和方法。個(gè)線程需要擁有的屬性和方法。 由于由于JavaJava只支持單重繼承,用這種方法定義的類不能再繼承其只支持單重繼承,用這種方法定義的類不能再繼承其它父類。它父類。關(guān)鍵性操作步驟:關(guān)鍵性操作步驟:(1)定義用戶線程的操作,)定義用戶線程的操作,即定義用戶線程的即

32、定義用戶線程的 run()方法()方法(2)在適當(dāng)時(shí)候建立用戶線程實(shí)例。)在適當(dāng)時(shí)候建立用戶線程實(shí)例。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/228關(guān)于關(guān)于Thread類:類:(1) 構(gòu)造函數(shù)構(gòu)造函數(shù) public Thread ( ):創(chuàng)建一個(gè)系統(tǒng)線程類的對象。:創(chuàng)建一個(gè)系統(tǒng)線程類的對象。 public Thread ( Runnable target ): 在上一個(gè)構(gòu)造函數(shù)完在上一個(gè)構(gòu)造函數(shù)完成的操作基礎(chǔ)之上,利用參數(shù)對象成的操作基礎(chǔ)之上,利用參數(shù)對象實(shí)現(xiàn)了實(shí)現(xiàn)了Runnable接接口的口的target對象中所定義的對象中所定義的run( )方法,來初始化或覆蓋新方法,來初始化或覆

33、蓋新創(chuàng)建的線程對象的創(chuàng)建的線程對象的run( )方法。方法。 public Thread ( String ThreadName ): 在第一個(gè)構(gòu)造函數(shù)在第一個(gè)構(gòu)造函數(shù)工作的基礎(chǔ)上,為所創(chuàng)建的線程對象指定一個(gè)字符串名稱工作的基礎(chǔ)上,為所創(chuàng)建的線程對象指定一個(gè)字符串名稱供以后使用。供以后使用。 public Thread (Runnable target, String ThreadName): 實(shí)實(shí)現(xiàn),兩構(gòu)造函數(shù)的功能?,F(xiàn),兩構(gòu)造函數(shù)的功能。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/229(2) 線程優(yōu)先級線程優(yōu)先級 Thread類有三個(gè)有關(guān)線程優(yōu)先級的靜態(tài)常量:類有三個(gè)有關(guān)線程優(yōu)先級的

34、靜態(tài)常量: MIN-PRIORITY 代表最小優(yōu)先級,通常為代表最小優(yōu)先級,通常為1; MAX-PRIORITY 代表最高優(yōu)先級,通常為代表最高優(yōu)先級,通常為10; NORM-PRIORITY 代表普通優(yōu)先級,缺省數(shù)值為代表普通優(yōu)先級,缺省數(shù)值為5 (3) Thread類的常用方法類的常用方法 start( ) 調(diào)用該方法啟動(dòng)線程調(diào)用該方法啟動(dòng)線程 run( ) 線程被調(diào)度后執(zhí)行的動(dòng)作線程被調(diào)度后執(zhí)行的動(dòng)作 sleep(int millsecond) 讓線程放棄讓線程放棄CUP資源休眠一段時(shí)間資源休眠一段時(shí)間 isAlive( ) 判斷線程是否處于存活狀態(tài)判斷線程是否處于存活狀態(tài) curren

35、tThread( ) 返回當(dāng)前正在使用返回當(dāng)前正在使用CUP資源的線程資源的線程 interrupt( ) 吵醒處于吵醒處于sleep狀態(tài)的線程狀態(tài)的線程 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2302. 在用戶自己的類中實(shí)現(xiàn)在用戶自己的類中實(shí)現(xiàn)RunnableRunnable接口接口 即實(shí)現(xiàn)即實(shí)現(xiàn)RunnableRunnable接口的用戶類必須實(shí)現(xiàn)其唯一的接口的用戶類必須實(shí)現(xiàn)其唯一的方法方法runrun()()。一個(gè)實(shí)現(xiàn)了。一個(gè)實(shí)現(xiàn)了RunnableRunnable接口的類實(shí)際接口的類實(shí)際上定義了一個(gè)主線程之外的新線程的操作上定義了一個(gè)主線程之外的新線程的操作。 實(shí)現(xiàn)接口實(shí)現(xiàn)接口Ru

36、nnableRunnable的類仍然可以繼承其它父類。的類仍然可以繼承其它父類。關(guān)鍵性操作步驟:關(guān)鍵性操作步驟: 定義定義run()方法的具體內(nèi)容()方法的具體內(nèi)容 當(dāng)用戶程序需要建立新線程時(shí),只要當(dāng)用戶程序需要建立新線程時(shí),只要以這個(gè)以這個(gè)實(shí)現(xiàn)實(shí)現(xiàn)了了run()方法的()方法的類為參數(shù)創(chuàng)建系統(tǒng)類類為參數(shù)創(chuàng)建系統(tǒng)類thread的對的對象象,就可以把用戶實(shí)現(xiàn)的,就可以把用戶實(shí)現(xiàn)的run()方法繼承過來。()方法繼承過來。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/231關(guān)于關(guān)于Runnable接口:接口: Runnable接口接口只有一個(gè)方法只有一個(gè)方法run( ),所有實(shí)現(xiàn),所有實(shí)現(xiàn)Run

37、nable接口的用戶類都必須具體實(shí)現(xiàn)這個(gè)接口的用戶類都必須具體實(shí)現(xiàn)這個(gè)run( )方法,為它書寫方法體并定義具體操作。方法,為它書寫方法體并定義具體操作。 Runnable接口中的這個(gè)接口中的這個(gè)run( )方法是一個(gè)較特殊方法是一個(gè)較特殊的方法,它可以被運(yùn)行系統(tǒng)自動(dòng)識別和執(zhí)行。當(dāng)線的方法,它可以被運(yùn)行系統(tǒng)自動(dòng)識別和執(zhí)行。當(dāng)線程被調(diào)度并轉(zhuǎn)入運(yùn)行狀態(tài)時(shí),它所執(zhí)行的就是程被調(diào)度并轉(zhuǎn)入運(yùn)行狀態(tài)時(shí),它所執(zhí)行的就是run( )方法中規(guī)定的操作。方法中規(guī)定的操作。Runnable例子例子 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/232實(shí)現(xiàn)多線程的兩種方法的比較:實(shí)現(xiàn)多線程的兩種方法的比較: 1. 使

38、用使用Runnable接口接口1) 可以將可以將CPU、代碼和數(shù)據(jù)分開,形成清晰、代碼和數(shù)據(jù)分開,形成清晰的模型的模型;2) 還可以從其他類繼承還可以從其他類繼承;3) 保持程序風(fēng)格的一致性。保持程序風(fēng)格的一致性。2. 直接繼承直接繼承Thread類類1) 不能再從其他類繼承不能再從其他類繼承;2) 編寫簡單,可以直接操縱線程,無需使用編寫簡單,可以直接操縱線程,無需使用 Thread.currentThread( )。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2333 Applet3 Applet類與類與AppletApplet小程序小程序3.1 Applet3.1 Applet的基本

39、工作原理的基本工作原理 Java AppletJava Applet是通過兼容是通過兼容JavaJava的的InternetInternet瀏覽器來解釋執(zhí)瀏覽器來解釋執(zhí)行的。行的。 編譯好的編譯好的JavaJava字節(jié)碼文件保存在特定的字節(jié)碼文件保存在特定的WWWWWW服務(wù)器上,當(dāng)服務(wù)器上,當(dāng)瀏覽器遇到網(wǎng)頁中嵌入的瀏覽器遇到網(wǎng)頁中嵌入的標(biāo)記時(shí),就會(huì)根據(jù)該標(biāo)記時(shí),就會(huì)根據(jù)該AppletApplet的名字和位置自動(dòng)把字節(jié)碼從服務(wù)器上下載到本地,的名字和位置自動(dòng)把字節(jié)碼從服務(wù)器上下載到本地,并利用瀏覽器本身擁有的并利用瀏覽器本身擁有的JavaJava解釋器直接執(zhí)行該字節(jié)碼。解釋器直接執(zhí)行該字節(jié)碼。

40、由于有瀏覽器的支持,由于有瀏覽器的支持,AppletApplet不需要建立自己的主流程框不需要建立自己的主流程框架,也不需要有專門的圖形界面。架,也不需要有專門的圖形界面。AppletApplet需要做的是接收和需要做的是接收和響應(yīng)瀏覽器發(fā)來的消息或事件。響應(yīng)瀏覽器發(fā)來的消息或事件。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2343.2 Applet類類(1)Applet類簡介類簡介 它是它是JavaJava類庫中一個(gè)重要的系統(tǒng)類,存在于類庫中一個(gè)重要的系統(tǒng)類,存在于java.appletjava.applet包中。包中。AppletApplet類是類是JavaJava的系統(tǒng)類的系統(tǒng)類j

41、ava. Awt.Paneljava. Awt.Panel的子類的子類。 PanelPanel屬于一種容器,作用是:屬于一種容器,作用是: 包容和排列其他的界面元素,如按鈕、對話框等包容和排列其他的界面元素,如按鈕、對話框等 響應(yīng)它所包容范圍之內(nèi)的事件,或把事件向更高層次傳遞。響應(yīng)它所包容范圍之內(nèi)的事件,或把事件向更高層次傳遞。 AppletApplet在此基礎(chǔ)上,還具有一些與瀏覽器和在此基礎(chǔ)上,還具有一些與瀏覽器和AppletApplet生生命周期有關(guān)的專門方法。命周期有關(guān)的專門方法。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/235(2)Applet類的主要方法類的主要方法1 1)in

42、itinit()方法()方法 用來完成主類實(shí)例的初始化工作。如:創(chuàng)建和初始化程用來完成主類實(shí)例的初始化工作。如:創(chuàng)建和初始化程序運(yùn)行所需要的對象實(shí)例,把圖形或字體加載入內(nèi)存,設(shè)置序運(yùn)行所需要的對象實(shí)例,把圖形或字體加載入內(nèi)存,設(shè)置各種參數(shù),加載圖形和聲音并播放等。各種參數(shù),加載圖形和聲音并播放等。2 2)startstart()方法()方法 用來啟動(dòng)瀏覽器運(yùn)行用來啟動(dòng)瀏覽器運(yùn)行AppletApplet的主線程。瀏覽器在調(diào)用的主線程。瀏覽器在調(diào)用initinit()方法初始化()方法初始化AppletApplet類的實(shí)例之后,接著會(huì)自動(dòng)調(diào)用類的實(shí)例之后,接著會(huì)自動(dòng)調(diào)用startstart()方法

43、,除此之外,()方法,除此之外,startstart()方法在()方法在AppletApplet被重新被重新啟動(dòng)時(shí)也會(huì)被系統(tǒng)自動(dòng)調(diào)用。啟動(dòng)時(shí)也會(huì)被系統(tǒng)自動(dòng)調(diào)用。3 3)stopstop()方法()方法 類似于類似于startstart()方法的逆操作,當(dāng)用戶瀏覽其它頁面,()方法的逆操作,當(dāng)用戶瀏覽其它頁面,或切換到其他系統(tǒng)應(yīng)用時(shí),瀏覽器將自動(dòng)調(diào)用或切換到其他系統(tǒng)應(yīng)用時(shí),瀏覽器將自動(dòng)調(diào)用stopstop()方法()方法暫停執(zhí)行暫停執(zhí)行AppletApplet的主線程。的主線程。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2364 4)paintpaint()方法()方法 主要用來在主要用來

44、在AppletApplet的界面中顯示文字、圖形和其他界面元的界面中顯示文字、圖形和其他界面元素,也是瀏覽器自動(dòng)調(diào)用的方法。導(dǎo)致瀏覽器調(diào)用素,也是瀏覽器自動(dòng)調(diào)用的方法。導(dǎo)致瀏覽器調(diào)用paintpaint()()方法的事件主要有三種:方法的事件主要有三種: AppletApplet被啟動(dòng)后,自動(dòng)調(diào)用被啟動(dòng)后,自動(dòng)調(diào)用paintpaint()來重新描繪自己的界()來重新描繪自己的界面;面; AppletApplet所在的瀏覽器窗口改變時(shí),要求自動(dòng)調(diào)用所在的瀏覽器窗口改變時(shí),要求自動(dòng)調(diào)用paintpaint()()來重畫界面;來重畫界面; AppletApplet的其他方法被調(diào)用時(shí),系統(tǒng)也會(huì)調(diào)用此方

45、法的其他方法被調(diào)用時(shí),系統(tǒng)也會(huì)調(diào)用此方法。 paintpaint()方法有一個(gè)固定的參數(shù)()方法有一個(gè)固定的參數(shù)GraphicsGraphics類的對象類的對象g g。 GraphicsGraphics類是用來完成一些較低級的圖形用戶界面操作的類,類是用來完成一些較低級的圖形用戶界面操作的類,其中包括畫圓、點(diǎn)、線、多邊形及顯示簡單文本。其中包括畫圓、點(diǎn)、線、多邊形及顯示簡單文本。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2375)destroy()方法()方法 當(dāng)用戶退出瀏覽器時(shí),瀏覽器自動(dòng)調(diào)用當(dāng)用戶退出瀏覽器時(shí),瀏覽器自動(dòng)調(diào)用Applet 實(shí)例的實(shí)例的destroy()方法完成釋放資源

46、、關(guān)閉連接之類的操作。()方法完成釋放資源、關(guān)閉連接之類的操作。Applet的生命周期與主要方法的生命周期與主要方法destroy( )消亡消亡init()初始化()初始化start()啟動(dòng)()啟動(dòng)stop()中止()中止下載并下載并實(shí)例化實(shí)例化Applet啟動(dòng)啟動(dòng)Applet退出瀏覽器退出瀏覽器Applet轉(zhuǎn)入后臺轉(zhuǎn)入后臺重新激活重新激活A(yù)pplet 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2383.3 HTML文件參數(shù)傳遞文件參數(shù)傳遞 Applet Applet通過標(biāo)記通過標(biāo)記 嵌入在嵌入在HTMLHTML文件中,文件中, 至少需要包括三個(gè)參數(shù):至少需要包括三個(gè)參數(shù):codecode

47、、heightheight、widthwidth。其它可選參數(shù)如下:其它可選參數(shù)如下:(1 1)codebasecodebase 當(dāng)當(dāng)AppletApplet字節(jié)碼文件的保存位置與所嵌入的字節(jié)碼文件的保存位置與所嵌入的HTMLHTML文檔不文檔不同時(shí),需要用此參數(shù)指明字節(jié)碼文件的位置,該位置用同時(shí),需要用此參數(shù)指明字節(jié)碼文件的位置,該位置用URLURL格式表示。格式表示。(2 2)altalt 如果瀏覽器不包含如果瀏覽器不包含JavaJava解釋器,則不能執(zhí)行字節(jié)碼文件,解釋器,則不能執(zhí)行字節(jié)碼文件,此時(shí)可用此時(shí)可用altalt參數(shù)告訴用戶此瀏覽器不支持參數(shù)告訴用戶此瀏覽器不支持JavaJav

48、a。(3 3)alignalign 表示表示AppletApplet界面區(qū)域在瀏覽器窗口中的對齊方式。界面區(qū)域在瀏覽器窗口中的對齊方式。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/239 HTML HTML文件可以通過標(biāo)記文件可以通過標(biāo)記向它所嵌入的向它所嵌入的AppletApplet傳遞參數(shù),傳遞參數(shù),使使AppletApplet的運(yùn)行更加靈活。的運(yùn)行更加靈活。 格式為:格式為: PARAM name= 標(biāo)記只能傳遞一個(gè)字符串類型的參數(shù)。標(biāo)記只能傳遞一個(gè)字符串類型的參數(shù)。 AppletApplet利用利用getParamtergetParamter()方法來獲取()方法來獲取HTMLHT

49、ML傳遞來的參數(shù),傳遞來的參數(shù),方法中用方法中用namename指定的參數(shù)名。指定的參數(shù)名。 格式:格式: getParamtergetParamter(” x x ”) 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2404 Java的異常處理的異常處理4.1 4.1 編程中的錯(cuò)誤編程中的錯(cuò)誤 編程中的錯(cuò)誤分為編程中的錯(cuò)誤分為編譯錯(cuò)誤編譯錯(cuò)誤和和運(yùn)行錯(cuò)誤運(yùn)行錯(cuò)誤。 編譯錯(cuò)誤:編譯錯(cuò)誤: 程序由于語法的原因無法通過由源代碼到目標(biāo)碼的編譯而產(chǎn)程序由于語法的原因無法通過由源代碼到目標(biāo)碼的編譯而產(chǎn)生的錯(cuò)誤。生的錯(cuò)誤。運(yùn)行錯(cuò)誤:運(yùn)行錯(cuò)誤:系統(tǒng)錯(cuò)誤系統(tǒng)錯(cuò)誤:引發(fā)操作系統(tǒng)問題的錯(cuò)誤,:引發(fā)操作系統(tǒng)問題的錯(cuò)

50、誤,如死循環(huán)、死機(jī)如死循環(huán)、死機(jī);邏輯錯(cuò)誤:邏輯錯(cuò)誤:無法實(shí)現(xiàn)設(shè)計(jì)意圖和功能的錯(cuò)誤,無法實(shí)現(xiàn)設(shè)計(jì)意圖和功能的錯(cuò)誤,如算法考慮如算法考慮不周、邊界條件不正確不周、邊界條件不正確。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2414.2 4.2 異常與異常類異常與異常類(1 1) Java Java 的異常處理機(jī)制的異常處理機(jī)制 異常是特殊的錯(cuò)誤運(yùn)行對象,又稱例外,對應(yīng)著異常是特殊的錯(cuò)誤運(yùn)行對象,又稱例外,對應(yīng)著JavaJava語言特定的運(yùn)行錯(cuò)誤處理機(jī)制。語言特定的運(yùn)行錯(cuò)誤處理機(jī)制。 為了能夠及時(shí)有效地處理程序中的運(yùn)行錯(cuò)誤,為了能夠及時(shí)有效地處理程序中的運(yùn)行錯(cuò)誤,JavaJava引入了引入了異

51、常異常和和異常類異常類。異常異常是是異常類異常類的對象的對象。一旦一個(gè)異常對象產(chǎn)生了,系統(tǒng)中就一定有相應(yīng)的機(jī)一旦一個(gè)異常對象產(chǎn)生了,系統(tǒng)中就一定有相應(yīng)的機(jī)制來處理它,確保不會(huì)產(chǎn)生死機(jī)、死循環(huán)或其它對操制來處理它,確保不會(huì)產(chǎn)生死機(jī)、死循環(huán)或其它對操作系統(tǒng)的損害,保證整個(gè)程序運(yùn)行的安全性。作系統(tǒng)的損害,保證整個(gè)程序運(yùn)行的安全性。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/242 (2 2)異常類結(jié)構(gòu)與組成)異常類結(jié)構(gòu)與組成 每一種類對應(yīng)一種特定的錯(cuò)誤;異常類都是系統(tǒng)每一種類對應(yīng)一種特定的錯(cuò)誤;異常類都是系統(tǒng)ExceptionException類的子類類的子類. . Throwable類類Exc

52、eption類類Error類類IOExceptionRuntimeExceptionInterruptedExceptionClassNotFoundExceptionIllegalAccessExceptionAWTException 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/243ThrowableThrowable類是類庫類是類庫java.langjava.lang包中的一個(gè)類包中的一個(gè)類,派生兩個(gè)子類:,派生兩個(gè)子類:ExceptionException和和ErrorErrorExceptionException類有兩個(gè)構(gòu)造函數(shù):類有兩個(gè)構(gòu)造函數(shù): public Exception

53、()public Exception(); public Exception(String s);public Exception(String s);其中其中s s是對該例外所對應(yīng)的錯(cuò)誤的描述。是對該例外所對應(yīng)的錯(cuò)誤的描述。從父類從父類ThrowableThrowable繼承的常用方法:繼承的常用方法:1 1) public String toString();public String toString(); 該方法返回描述當(dāng)前該方法返回描述當(dāng)前ExceptionException類信息的字符串。類信息的字符串。 2 2) public void printStackTrace();pub

54、lic void printStackTrace(); 該方法的功能是完成一個(gè)打印操作,在屏幕上輸出當(dāng)前例該方法的功能是完成一個(gè)打印操作,在屏幕上輸出當(dāng)前例外對象的堆棧使用軌跡,即程序先后調(diào)用了哪些對象或外對象的堆棧使用軌跡,即程序先后調(diào)用了哪些對象或類的方法,使得運(yùn)行過程中產(chǎn)生了這個(gè)例外對象。類的方法,使得運(yùn)行過程中產(chǎn)生了這個(gè)例外對象。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/244(3)系統(tǒng)定義的運(yùn)行異常與所對應(yīng)的系統(tǒng)運(yùn)行錯(cuò)誤)系統(tǒng)定義的運(yùn)行異常與所對應(yīng)的系統(tǒng)運(yùn)行錯(cuò)誤系統(tǒng)定義的運(yùn)行異常異常對應(yīng)的系統(tǒng)運(yùn)行錯(cuò)誤ClassNotFoundException未找到欲裝載使用的類ArrayIn

55、dexOutOfBoundsException數(shù)組越界使用FileNotFoundException未找到指定的文件或目錄IOException輸入、輸出錯(cuò)誤ArithmeticException算術(shù)錯(cuò)誤,如除數(shù)為0SecurityException安全性錯(cuò)誤,如Applet欲讀寫文件MalformedURLExceptionURL格式錯(cuò)誤 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/245(4)用戶自定義的異常)用戶自定義的異常 作用作用:用來:用來處理處理程序中特定的程序中特定的邏輯運(yùn)行錯(cuò)誤邏輯運(yùn)行錯(cuò)誤。 創(chuàng)建用戶自定義異常時(shí),一般需要完成如下工作:創(chuàng)建用戶自定義異常時(shí),一般需要完成如下

56、工作:(1 1)聲明一個(gè)新的異常類,使之以)聲明一個(gè)新的異常類,使之以ExceptionException類或其他某個(gè)類或其他某個(gè)已經(jīng)存在的系統(tǒng)異常類或用戶異常類為父類;已經(jīng)存在的系統(tǒng)異常類或用戶異常類為父類;(2 2)為新的異常類定義屬性和方法,或重載父類的屬性和方)為新的異常類定義屬性和方法,或重載父類的屬性和方法,使這些屬性和方法能夠體現(xiàn)該類所對應(yīng)的錯(cuò)誤的信息。法,使這些屬性和方法能夠體現(xiàn)該類所對應(yīng)的錯(cuò)誤的信息。 定義足夠多的異常類是構(gòu)建一個(gè)穩(wěn)定完善的應(yīng)用系統(tǒng)的重定義足夠多的異常類是構(gòu)建一個(gè)穩(wěn)定完善的應(yīng)用系統(tǒng)的重要基礎(chǔ)之一。要基礎(chǔ)之一。 淮海工學(xué)院淮海工學(xué)院 計(jì)算機(jī)課程2021/4/2464. 3 異常的拋出異常的拋出 Java Java程序在運(yùn)行時(shí)如果由于可識別的錯(cuò)誤,系統(tǒng)就產(chǎn)生程序在運(yùn)行時(shí)如果由于可識別的錯(cuò)誤,系統(tǒng)就產(chǎn)生一個(gè)與該錯(cuò)誤相對應(yīng)的異常類的對象,這個(gè)過程就是異常一個(gè)與該錯(cuò)誤相對應(yīng)的異常類的對象,這個(gè)過程就是異常的拋出。的拋出。(1 1)系統(tǒng)自動(dòng)拋出的異常)系統(tǒng)自動(dòng)拋出的異常 所有系統(tǒng)定義的運(yùn)行異常都可以由系統(tǒng)自動(dòng)拋出。所有系統(tǒng)定義的運(yùn)行異常都可以由系統(tǒng)自動(dòng)拋出。例:例:public class TestSystemExceptionpublic

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論