程序員玩轉(zhuǎn)算法韓順平-清華教程lesson_第1頁(yè)
程序員玩轉(zhuǎn)算法韓順平-清華教程lesson_第2頁(yè)
程序員玩轉(zhuǎn)算法韓順平-清華教程lesson_第3頁(yè)
程序員玩轉(zhuǎn)算法韓順平-清華教程lesson_第4頁(yè)
程序員玩轉(zhuǎn)算法韓順平-清華教程lesson_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課前思考例外?Java中有哪兩種例外處理機(jī)制?字節(jié)流和字符流的基類各是什么?對(duì)象的串行化?對(duì)象串行化的作用是什么?2第四講 Java的例外處理和輸入輸出流1難點(diǎn)和重點(diǎn)如何使用Java中兩種例外處理機(jī)制的方法,拋棄例外和 拋棄例外的區(qū)別與聯(lián)系。對(duì)象串行化的概念。遇到實(shí)際問(wèn)題時(shí),要根據(jù)需要正確使用各種輸入出流,特別是對(duì)中文使用適當(dāng)?shù)淖址斎肓鳌?學(xué)習(xí)目標(biāo)本講主要講述java語(yǔ)言中的輸入/出的處理和獨(dú)特的例外處理機(jī)制,通過(guò)本講的學(xué)習(xí),可以編寫(xiě)更為完善的java程序。3例外例外就是在程序的運(yùn)行過(guò)程中所發(fā)生的異常事件,它中斷指令的正常執(zhí)行。6第九章 例外處理5例外示例C:javac ExceptionD

2、emol.javaExceptionDemo1.java:6: Exception java.io.FileNotFoundException must be caught, or it must be declaredhe throws clause of this method.FileInputStream fis = new FileInputStream( text );ExceptionDemo1.java:8: Exception java.io.IOException must be caught, or it must be declaredhe throws clause

3、of this method.while( (b=fis.read()!=-1 )2 errors8例外示例import java.io.*;class ExceptionDemo1public sic void main( String args ) FileInputStream fis = new FileInputStream( text );b;while( (b=fis.read()!=-1 ) System.out.pr( b );fis.close( );7例外示例C:javac ExceptionDemo2.javaC:java ExceptionDemo2java.lang

4、.ArithmeticException: / by zeroatExceptionDemo2.main(ExceptionDemo2.java:4)10例外示例class ExceptionDemo2public sic void main( String args ) a = 0;System.out.prln( 5/a );9例外處理機(jī)制當(dāng)Java運(yùn)行時(shí)系統(tǒng)得到一個(gè)例外對(duì)象時(shí), 它將會(huì)尋找處理這一例外的代碼。找到 能夠處理這種類型的例外的方法后,運(yùn) 行時(shí)系統(tǒng)把當(dāng)前例外對(duì)象交給這個(gè)方法 進(jìn)行處理,這一過(guò)程稱為捕獲(catch)例外。如果Java運(yùn)行時(shí)系統(tǒng)找不到可以捕獲例外的方法,則運(yùn)行時(shí)系

5、統(tǒng)將終止,相應(yīng)的 Java程序也將退出。12例外處理機(jī)制在Java程序的執(zhí)行過(guò)程中,如果出現(xiàn)了異常事件,就會(huì)生成一個(gè)例外對(duì)象。生成的例外對(duì)象將傳遞給Java運(yùn)行時(shí)系統(tǒng),這一例外的產(chǎn)生和提交過(guò)程稱為拋棄(throw)例外。11LinkageErrorErrorVirtualMachineErrorAWTErrorArithmeticException.ThrowableIndexOutOfBounds.RuntimeExceptionerruptedException.ExceptionIOExceptionFileNotFoundExceptionEOFException.AWTExcepti

6、on.14例外(Throwable)分類Error動(dòng)態(tài) 失敗,虛擬機(jī)錯(cuò)誤等,通常Java程序不應(yīng)該捕獲這類例外,也不會(huì)拋棄這種例外。Exception運(yùn)行時(shí)例外繼承于RuntimeException。Java編譯器允許程序不對(duì)它們做出處理。非運(yùn)行時(shí)例外除了運(yùn)行時(shí)例外之外的其他由Exception繼承來(lái)的例外類。Java編譯器要求程序必須捕獲或者 拋棄這種例外。13try捕獲例外的第一步是用try選定捕獲例 外的范圍,由try所限定的代碼塊中的語(yǔ)句 在執(zhí)行過(guò)程中可能會(huì)生成例外對(duì)象并拋棄。16捕獲例外捕獲例外是通過(guò)try-catch-finally語(yǔ)句實(shí)現(xiàn)的。try.catch( Exceptio

7、nName1 e ).catch( ExceptionName2 e ).finally.15try.catch( FileNotFoundException e ) System.out.prln( e );System.out.prln(message: +e.getMessage() );e.prStackTrace( System.out );catch( IOException e ) System.out.prln( e );18catch每個(gè)try代碼塊可以伴隨一個(gè)或多個(gè)catch語(yǔ)句,用于處理try代碼塊中所生成的例外事件。catch語(yǔ)句只需要一個(gè)形式參數(shù)指明它所能夠捕獲的例外

8、類型,這個(gè)類必須是Throwable的子類,運(yùn)行時(shí)系統(tǒng)通過(guò)參數(shù)值把被拋棄的例外對(duì)象傳遞給catch塊.在catch塊中是對(duì)例外對(duì)象進(jìn)行處理的代碼,與其它對(duì)象一樣,可以一個(gè)例外對(duì)象的變量或調(diào)用它的方法。getMessage( )是類Throwable所提供的方法,用來(lái)得到有關(guān)異常事件的信息,類Throwable還提供了方法prStackTrace( )用來(lái)異常事件發(fā)生時(shí)執(zhí)行堆棧的內(nèi)容。17finally捕獲例外的最后一步是通過(guò)finally語(yǔ)句為例外處理提供一個(gè)的出口,使得在控制流轉(zhuǎn)到程序的其它部分以前,能夠?qū)Τ绦虻臓顟B(tài)作的管理。不論在try代碼塊中是否發(fā)生了異常事件,finally塊中的語(yǔ)句都

9、會(huì)被執(zhí)行。20catch語(yǔ)句的順序捕獲例外的順序和不同catch語(yǔ)句的順序有關(guān),當(dāng)捕獲到一個(gè)例外時(shí),剩下的catch語(yǔ)句就不再進(jìn)行匹配。因此,在安排catch語(yǔ)句的順序時(shí),首先應(yīng)該捕獲最特殊的例外,然后再逐漸一般化。也就是一般先安排子類,再安排父類。19拋棄例外如果在一個(gè)方法中生成了一個(gè)例外,但是這一方法并不確切地知道該如何對(duì)這一異常事件進(jìn)行處理,這時(shí),一個(gè)方法就應(yīng)該 拋棄例外,使得例外對(duì)象可以從調(diào)用棧向后 ,直到有合適的方法捕獲它為止。22tryb=0; System.out.prln(5/b);catch(ArithmeticException e) finallyif (fis!=nul

10、l) System.out.prln(“closingFileInputStream”);elseSystem.out.prln(“FileInputStream not open”);21拋棄例外拋棄例外首先要生成例外對(duì)象,例外或者由虛擬機(jī)生成,或者由某些類的實(shí)例生成,也可以在程序中生成。生成例外對(duì)象是通過(guò)throw語(yǔ)句實(shí)現(xiàn)的。IOException e=new IOException(); throw e ;可以拋棄的例外必須是Throwable或其子類的實(shí)例。下面的語(yǔ)句在編譯時(shí)將會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤:throw new String(want to throw);24拋棄例外拋棄例外是在一個(gè)方

11、法中的throws子句中指明的。例如:publicread () throws IOException.throws子句中同時(shí)可以指明多個(gè)例外,說(shuō)明該方法將不對(duì)這些例 行處理,而是 拋棄它們:publicsicvoidmain(Stringargs)throws IOException,IndexOutOfBoundsException 23例外類的使用FileInputStream 的APIpublic FileInputStream(String name) throws FileNotFoundException26例外類的使用自定義例外類必須是Throwable的直接或間接子類一個(gè)方法

12、所 拋棄的例外是作為這個(gè)方法與外界交互的一部分而存在的。方法的調(diào)用者必須了解這些例外,并確定如何正確的處理他們。25例外類的使用積極處理方式:import java.io.*;class ExceptionDemo1public sic void main( String args ) try FileInputStream fis = newFileInputStream( text ); catch(FileNotFoundException e) 28例外示例import java.io.*;class ExceptionDemo1public sic void main( String

13、 args ) FileInputStreamfis=newFileInputStream( text );27例外類的使用如果采用消極處理方式,則由調(diào)用該方法的方法進(jìn)行處理;但是調(diào)用該方法的方法也可以采用消極和積極兩種處理方式,一直傳遞到Java運(yùn)行環(huán)境.30例外類的使用消極處理方式:import java.io.*;class ExceptionDemo1public sic void main( String args ) throws FileNotFoundExceptionFileInputStream fis = newFileInputStream( text );29例外類的

14、使用(3)在自定義例外類時(shí),如果它所對(duì)應(yīng)的異常事件通常總是在運(yùn)行時(shí)產(chǎn)生的,而且不容易 它將在何時(shí)、何處發(fā)生,則可以把它定義為運(yùn)行時(shí)例外,否則應(yīng)定義為非運(yùn)行時(shí)例外。32例外類的使用運(yùn)行時(shí)例外則表示由運(yùn)行時(shí)系統(tǒng)所檢測(cè)到的程序設(shè)計(jì)問(wèn)題或者API的使用不當(dāng)問(wèn)題,它可能在程序的任何地方出現(xiàn):對(duì)于運(yùn)行時(shí)例外,如果不能它何時(shí)發(fā)生,程序可以不做處理,而是讓Java虛擬機(jī)去處理它。如果程序可以預(yù)知運(yùn)行時(shí)例外可能發(fā)生的地點(diǎn)和時(shí)間,則應(yīng)該在程序中進(jìn)行處理,而不應(yīng)簡(jiǎn)單的把它交給運(yùn)行時(shí)系統(tǒng)。31java.io包字節(jié)流從InputStream和OutputStream派生出來(lái)的一系列類。這類流以字節(jié)(byte)為基本處理

15、 。字符流從Reader和Writer派生出的一系列類,這類流以16位的Unicode碼表示的字符為基本處理單位。34第十章 輸入/輸出處理33字符流Reader、WriterInputStreamReader、OutputStreamWriterFileReader、FileWriterCharArrayReader、CharArrayWriterPipedReadipedWriterFilterReader、FilterWriterBufferedReader、BufferedWriterStringReader、StringWriter36字節(jié)流InputStream、OutputStr

16、eamFileInputStream、FileOutputStreamPipedInputStreipedOutputStreamByteArrayInputStream、ByteArrayOutputStreamFilterInputStream、FilterOutputStreamDataInputStream、DataOutputStreamBufferedInputStream、BufferedOutputStream35其它文件處理File、RandomAcsFile;接口DataInput、DataOutput、ObjectInput、 ObjectOutput;38對(duì)象流Obje

17、ctInputStream、ObjectOutputStream37I/O處理的類層次ObjectOutputStream FileOutputStreamOutputStreamPipedOutputStreamByteArrayOutputStreamDataOutputStreamFilterOutputStreamBufferedOutputStream Pr Stream40FileNameFilterStreamTokenizerFileDescriptorFileDataOutputRandomAcsFileObjectOutputI/O處理的類層次FileInputStream

18、 PipedInputStreamByteArrayInputStreamBufferedInputStream InputStreamSequenceInputStreamLineNumberInputStreamStringBufferInputStreamPushbackInputStreamFilterInputStreamDataInputStream ObjectInputStreamRandomAcsF39ileObjectInputDataInputInputStream關(guān)閉流close( );使用輸入流中的標(biāo)記 void mark( readlimit ); void res

19、et( );markSupported( );42InputStream從流中數(shù)據(jù)read( );read( byte b );read( byte b ,off,len ); available( );long skip( long n );41文件處理File、FileInputStream、FileOutputStream、 RamdomAcsFile44OutputStream輸出數(shù)據(jù)void write(b ); void write( byte b );void write( byte b ,off,len );flush( )刷空輸出流,并輸出所有被緩存的字節(jié)。關(guān)閉流close(

20、 );43文件描述文件名的處理String getName( );/*得到一個(gè)文件的名稱(不包括路徑)*/String getPath( );/得到一個(gè)文件的路徑名 String getAbsolutePath( );/*得到一個(gè)文件的絕對(duì)路徑名*/String getParent( );/*得到一個(gè)文件的上一級(jí)目錄名*/String renameTo(File newName);/*將當(dāng)前文件名更名為給定文件的完整路徑*/46文件描述類File提供了一種與機(jī)器無(wú)關(guān)的方式來(lái)描述一個(gè)文件對(duì)象的屬性。文件的生成public File(String path);public File(String

21、path,String name); public File(File dir,String name);45文件描述普通文件信息和工具long lastModified( );/*得到文件最近一次修改的時(shí)間*/long length( );/得到文件的長(zhǎng)度,以字節(jié)為 delete( );/刪除當(dāng)前文件目錄操作mkdir( );/*根據(jù)當(dāng)前對(duì)象生成一個(gè)由該對(duì)象指定的路徑*/ String list( );/列出當(dāng)前目錄下的文件48文件描述文件屬性測(cè)試exists( );/*測(cè)試當(dāng)前File對(duì)象所指示的文件是否存在*/canWrite( );/測(cè)試當(dāng)前文件是否可寫(xiě) canRead( );/測(cè)試當(dāng)

22、前文件是否可讀 isFile( );/*測(cè)試當(dāng)前文件是否是文件(不是目錄)*/ isDirectory( );/*測(cè)試當(dāng)前文件是否是目錄*/47System.out.pr ln(name+f.getName(); System.out.prln(path+f.getPath();System.out.prln(absolute path+f.getAbsolutePath(); System.out.pr ln(parent+f.getParent(); System.out.prln(is a file?+f.isFile();System.out.pr ln(is a directory?

23、+f.isDirectory(); System.out.pr ln(length+f.length(); System.out.pr ln(can read+f.canRead(); System.out.pr ln(can write+f.canWrite(); System.out.prln(last modified+f.lastModified(); File newF=new File(newFile);System.out.prln(. Rename +f+.); f.renameT F);50例10.1import java.io.*; class FileTestpublic

24、 sic void main(String args)System.out.prln(path separator+File.pathSeparator);System.out.prln(path separator char+File.pathSeparatorChar);System.out.prln(separator+File.separator); system.out.prln(separator char+File.separatorChar); File f=new File(/dong1/test1.class);System.out.prln(); System.out.p

25、rln(f);System.out.prln(exist?+f.exists();49運(yùn)行結(jié)果path separator:path separator char:separator / separator char /dong1/test1.class exist? truename test1.classpath /dong1/test1.classabsolute path /dong1/test1.classparent /dong152System.out.prln(name +newF.getName(); System.out.pr ln(f+exist?+f.exists();

26、 System.out.prln(. delete+newF+.); newF.delete();System.out.prln(newF+exist?+newF.exists();51文件處理列出目錄中與某種模式相匹配的文件:public String list(FilenameFilter filter);在接口FilenameFilter中定義的方法只有: accept(File dir,String name);54運(yùn)行結(jié)果is a file? trueis a directory? false length 514can readtrue can write truelast mod

27、ified 907117020000. Rename /dong1/test1.class name newFile/dong1/test1.class exist? false. delete newFile .newFile exist? false53for (i=0;ifiles.length;i+) File f=new File(filesi);if(f.isFile()System.out.prln(“file”+f); elseSystem.out.prln(“sub directory”+f);56例10.2import java.io.*;public class File

28、FilterTestpublic sic void main(String args) File dir=new File(“/dongl”); Filter filter=new Filter(“htm”);System.out.prln(“l(fā)ist html files in directory ”+dir);String files=dir.list(filter);55運(yùn)行結(jié)果list html files in directoty /dongl file cert_test.htmfile cert_sle.htm file cert_obj.htm58class Fileter i

29、mplements FilenameFilter String extent;File(String extent) this.extent=extent;publicaccept(File dir,String name)return name.endsWith(“.”+extent);57FileInputStream fis; tryfis = new FileInputStream( text ); System.out.pr( content of text is : );b;while( (b=fis.read()!=-1 ) System.out.pr( (char)b );ca

30、tch( FileNotFoundException e ) System.out.prln( e );catch( IOException e ) System.out.prln( e );60文件的順序處理類FileInputStream和FileOutputStream用來(lái)進(jìn)行文件I/O處理,由它們所提供的方法可以打開(kāi)本機(jī)上的文件,并進(jìn)行順序的讀/寫(xiě)。59隨機(jī)存取文件構(gòu)造方法:RandomAcsFile(String name,String mode); RandomAcsFile(File file,String mode);文件指針的操作 long getFilePoer( ); v

31、oid seek( long);skipBytes(n );62隨機(jī)存取文件public class RandomAcsFile extends Objectimplements DataInput, DataOutput接口DataInput中定義的方法主要包括從流中基本類型的數(shù)據(jù)、 一行數(shù)據(jù)、或者 指定長(zhǎng)度的字節(jié)數(shù)。如:read( )、read ( )、 readLine( )、readFully( )等。接口DataOutput中定義的方法主要是向流中寫(xiě)入 基本類型的數(shù)據(jù)、或者寫(xiě)入一定長(zhǎng)度的字節(jié)數(shù)組。如:writeChar( )、writeDouble( )、write( )等。61過(guò)濾

32、流過(guò)濾流在讀/寫(xiě)數(shù)據(jù)的同時(shí)可以對(duì)數(shù)據(jù)進(jìn)行處理,它提供了同步機(jī)制,使得某一時(shí)刻只有一個(gè)線程可以 一個(gè)I/O流,以防止多個(gè)線程同時(shí)對(duì)一個(gè)I/O流進(jìn)行操作所帶來(lái)的意想不到的結(jié)果。類FilterInputStream和FilterOutputStream分別作為所有過(guò)濾輸入流和輸出流的父類。64隨機(jī)存取文件例10.4(見(jiàn)書(shū)上106頁(yè))63過(guò)濾流BufferedInputStream和BufferedOutputStream緩沖流,用于提高輸入/輸出處理的效率。java.lang.Object|+java.io.InputStream|+java.io.FilterInputStream|+java.i

33、o.BufferedInputStream66過(guò)濾流為了使用一個(gè)過(guò)濾流,必須首先把過(guò)濾流連接到某個(gè)輸入/出流上,通常通過(guò)在構(gòu)造方法的參數(shù)中指定所要連接的輸入/出流來(lái)實(shí)現(xiàn)。例如:FilterInputStream( InputStream in ); FilterOutputStream( OutputStream out );65過(guò)濾流DataInputStreambytereadByte()long readLong() doublereadDouble()DataOutputStreamvoidwriteByte(byte) void wriong(long)voidwriteDouble

34、(double)68過(guò)濾流DataInputStream 和DataOutputStream可以以與機(jī)器無(wú)關(guān)的格式各種類型的數(shù)據(jù)。public class DataInputStream extends FilterInputStream implements DataInput67例10.5import java.io.*;public class getIdentifierpublic sic void main(String args) tryFileInputStream fis=new FileInputStream(“test”);PushbackInputStreis=new P

35、ushbackInputStream(fis);data;in idNum=0;70過(guò)濾流LineNumberInputStream除了提供對(duì)輸入處理的支持外,LineNumberInputStream可以當(dāng)前的行號(hào)。PushbackInputStream提供了一個(gè)方法可以把剛讀過(guò)的字節(jié)退回到輸入流中。PrStream打印流的作用是把Java語(yǔ)言的內(nèi)構(gòu)類型以其字符表示形式送到相應(yīng)的輸出流。69dodata=pis.read();while(data!=- 1)&!Character.isLetter(char)data);pis.unread(data);System.out.prln(“fi

36、nd”+idNum+ “ identifiers”);catch(FileNotFoundException e) System.out.prln(“error”+e);72dodata=pis.read();while(data!=- 1)&!Character.isLetter(char)data);pis.unread(data); while(data=pis.read()!=-1)if(Character.isLetterOrDigit(char)data) System.out.pr(char)data);elseidNum+; System.out.prln();71運(yùn)行結(jié)果ja

37、va is not only aprogramming languagefind 7 identifiers74catch(IOException e) System.out.prln(“error”+e);文件“test”的內(nèi)容為:1java is not %only2#a programming language73流結(jié)束的判斷read()返回-1。read()read()、readByte()、readLong()、 readDouble()等;產(chǎn)生EOFException。readLine( )返回null。76I/O例外進(jìn)行I/O操作時(shí)可能會(huì)產(chǎn)生I/O例外,屬于非運(yùn)行時(shí)例外,應(yīng)該在程

38、序中處理。如:FileNotFoundException, EOFException, IOException75ReaderReader類是處理所有字符流輸入類的父類。字符publicread() throws IOException;publicread(char cbuf) throws IOException; public abstractread(char cbuf,off,len)throws IOException;78字符流java.io包中提供了專門(mén)用于字符流處理的類(以Reader和Writer為基礎(chǔ)派生出的一系列類)。Reader和Writer這兩個(gè)類是抽象類,只是提供

39、了一系列用于字符流處理的接口,不能生成這兩個(gè)類的實(shí)例,只能通過(guò)使用由它們派生出來(lái)的子類對(duì)象來(lái)處理字符流。77WriterWriter類是處理所有字符流輸出類的父類。 向輸出流寫(xiě)入字符public void write(c) throws IOException; public void write(char cbuf) throws IOException; public abstract void write(char cbuf,off,len)throws IOException;public void write(String str) throws IOException; publi

40、c void write(String str,off,len) throwsIOException;80Reader標(biāo)記流publicmarkSupported();public void mark(readAheadLimit) throws IOException;public void reset() throws IOException;關(guān)閉流public abstract void close() throws IOException;79InputStreamReader和OutputStreamWriterjava.io包中用于處理字符流的最基本的類,用來(lái)在字節(jié)流和字符流之間作

41、為中介。82Writerflush( )刷空輸出流,并輸出所有被緩存的字節(jié)。關(guān)閉流public abstract void close() throws IOException;81InputStreamReader和OutputStreamWriter讀入和寫(xiě)出字符基本同Reader和Writer。獲取當(dāng)前編碼方式public String getEncoding();關(guān)閉流public void close() throws IOException;84InputStreamReader和OutputStreamWriter生成流對(duì)象public InputStreamReader(Inp

42、utStream in);public InputStreamReader(InputStream in,String enc) throws UnsupportedEncodingException;public OutputStreamWriter(OutputStream out); public OutputStreamWriter(OutputStream out,Stringenc) throws UnsupportedEncodingException;83BufferedReader和BufferedWriter讀入/寫(xiě)出字符除了Reader和Writer中提供的基本的讀寫(xiě)方法

43、外,增加對(duì)整行字符的處理。 public String readLine() throws IOException;public void newLine() throws IOException;86BufferedReader和BufferedWriter生成流對(duì)象public BufferedReader(Reader in); public BufferedReader(Reader in,sz); public BufferedWriter(Writer out); public BufferedWriter(Writer out, sz);85運(yùn)行結(jié)果如下:Read: java i

44、s a platform independent Read: programming languageRead: it is aRead: object oriented language.88import java.io.*;public class CharInputpublic sic void main(String args) throws FileNotFoundException,IOExceptionString s; FileInputStream is; InputStreamReader ir; BufferedReader in;is=new FileInputStre

45、am(“test.txt”); ir=new InputStreamReader(is); in=new BufferedReader(ir); while(s=in.readLine()!=null) System.out.prln(Read: +s); 87注意:在 字符流時(shí),如果不是來(lái)自于本地的,比如說(shuō)來(lái)自于網(wǎng)絡(luò)上某處的與本地編碼方式不同的機(jī)器,那么 在構(gòu)造輸入流時(shí)就不能簡(jiǎn)單地使用本地缺省的編碼方式,否則讀出的字符就不正確;為了正確地讀出異種機(jī)上的字符, 應(yīng)該使用下述方式構(gòu)造輸入流對(duì)象:ir = new InputStreamReader(is, “8859_1”);采用ISO 8859

46、_1編碼方式,這是一種到ASCII碼的編碼方式,可以在不同之間正確轉(zhuǎn)換字符。90從鍵盤(pán)接收輸入的數(shù)據(jù)InputStreamReader ir; BufferedReader in;ir=new InputStreamReader(System.in); in=new BufferedReader(ir);String s=in.readLine();System.out.prln(“Input value is: ”+s); i =egarse(s);/轉(zhuǎn)換成 型i*=2;System.out.prln(“Inputvaluechangedafter doubled: ”+i);89串行化方法

47、在java.io包中,接口Serializable用來(lái)作為實(shí)現(xiàn)對(duì)象串行化的工具,只有實(shí)現(xiàn)了 Serializable的類的對(duì)象才可以被串行化。92對(duì)象的串行化(Serialization)對(duì)象自己的狀態(tài)以便將來(lái)再生的能力,叫作對(duì)象的持續(xù)性(persistence)。對(duì)象通過(guò)寫(xiě)出描述自己狀態(tài)的數(shù)值來(lái)自己,這個(gè)過(guò)程叫對(duì)象的串行化 (Serialization)。91構(gòu)造對(duì)象的輸入輸出流java.io包中,提供了ObjectInputStream和 ObjectOutputStream將數(shù)據(jù)流功能擴(kuò)展至可讀寫(xiě)對(duì)象。在ObjectInputStream中用 readObject()方法可以直接一個(gè)對(duì)象

48、, ObjectOutputStream中用writeObject()方法可以直接將對(duì)象保存到輸出流中。94定義一個(gè)可串行化對(duì)象public class Student implements Serializableid;/學(xué)號(hào)String name;/ age;/String department /系別public Student(id,String name,age,String department)this.id = id; = name; this.age = age;this.department = department;93恢復(fù)對(duì)象狀態(tài)FileInputStream fi=new FileInputStream(data.ser); ObjectInputStream si=new ObjectInputStream(fi); trystu=(Student)si

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論