06.05 「javaSE基礎」2018面試-IO試題集-字節流和字符流區別,序列化

「javaSE基礎」2018面試-IO試題集-字節流和字符流區別,序列化

字符流圖

「javaSE基礎」2018面試-IO試題集-字節流和字符流區別,序列化

字節流圖

1、字節流和字符流的區別?

字節流讀取數據時,讀到一個字節就返回一個字節;字符流使用了字節流讀到一個或多個字節(中文對應的字節數是2個,在UTF-8碼錶中是3個字節)時。先去查指定的編碼表,將查到的字符返回。字節流可以處理所有類型的數據,如圖片、MP3、視頻等文件,而字符流只能處理字符數據。只要是純文本數據,就要優先考慮字符流,除此之外都用字節流。字節流主要處理byte數據類型,以byte數組為準,主要的操作類有OutputStream和InputStream。

字符流處理的單元為2個字節的Uncode字符,分別操作字符、字符數組或字符串,而字節流處理單元為1個字節,操作字節和字節數組。所以字符流是由java虛擬機將字節轉換為2個字節的Unicode字符為單位的字符而成的,所以它對多國語言支持性比較好!如果是音頻、圖片、視頻等文件則用字節流,如果關係到中文(文本)的,則用字符流較好。在程序中一個字符等於兩個字節,java提供了Reader和Writer兩個類專門操作字符流。

2、什麼是java序列化?如何實現java序列化?

序列化就是一種用於處理對象流的機制,所謂的對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可以對流化後的對象傳輸於網絡之間。序列化是為了解決在對對象流進行讀寫操作時引發的問題。

序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implement Serializable只是為了標註該對象可以被序列化,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則使用輸入流。

「javaSE基礎」2018面試-IO試題集-字節流和字符流區別,序列化


分享到:


相關文章: