久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何理解Java 字節流與字符流

164次閱讀
沒有評論

共計 1180 個字符,預計需要花費 3 分鐘才能閱讀完成。

如何理解 Java 字節流與字符流,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

下面我們開始今天的內容。

字節流和字符流其實很好理解!

字節流就是 Byte 流,字節就是 Byte。

字符流就是 Character 流,字符就是 Character。

這里面有兩個單位換算大家需要記住一下。

1 byte = 8 bit

1 char = 2 byte = 16 bit

雖然 1 bit 才是數據真正的最小單位,但 1 bit 的信息量太少了。要表示一個有用的信息,需要好幾個 bit 一起表示。所以大多數情況下,字節是數據最小的基本單位。

比如,我們熟知的基本型的大小都是 8 bit(也就是 1 字節)的整數倍:

boolean: 1 byte

short: 2 byte

int: 4 byte

float: 4 byte

long: 8 byte

double: 8 byte

到這里,我們認識的都是字節。但是,Java I/O 的編碼系統提供的 Java IO 庫有兩個支系,面向字節流的 InputStream 和 OutputStream;面向字符的 Reader 和 Writer。

為什么要有字符流呢?那是因為英文,我們可以用字節來表示,但是中文、日文、韓文等沒法用字節來表示了,所有人們就想到了新的字符編碼集。比如,Unicode 字符集,GB 18030,GBK,Big5,ISO-8859-1 等。

所以,最終就是一個字符用 1 個、2 個或 4 個字節組成。總而言之,一切都是字節流,其實沒有字符流這個東西。字符只是根據編碼集對字節流翻譯之后的產物。

所以,字節流的 InputStream 和 OutputStream 才是一切的基礎。實際總線中流動的只有字節流。需要對字節流做特殊解碼才能得到字符流。Java 中負責從字節流向字符流解碼的橋梁是 InputStreamReader 和 InputStreamWriter。

看下面的 InputStreamReader 和 OutputStreamWriter 的結構圖。

實際負責編碼和解碼的是 StreamDecoder 類和 StreamEncoder 類。編碼過程中必須指定使用的字符編碼集 Charset。所以 InputStreamReader 和 OutputStreamWriter 的構造器都帶有 Charset 類型的參數。

如果沒有指定編碼集,將使用系統默認編碼集。而我們經常使用的 FileInputReader 和 FileOutputWriter 就是 InputStreamReader 和 OutputStreamWriter 的派生類。

計算機中本沒有字符流,一開始只適用于英文,但是互聯網屬于全人類的,所以人們又搞出了字符流。字符只是包裝的字節而已。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計1180字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 永济市| 噶尔县| 修文县| 上栗县| 新巴尔虎右旗| 禄丰县| 清镇市| 区。| 盐城市| 三明市| 宁都县| 盐亭县| 桑植县| 惠来县| 平原县| 开封县| 筠连县| 竹北市| 鄂伦春自治旗| 东源县| 鹿邑县| 上思县| 赤水市| 海林市| 江源县| 太谷县| 平陆县| 嘉禾县| 馆陶县| 疏附县| 休宁县| 潼南县| 上饶县| 沙坪坝区| 漳浦县| 内乡县| 烟台市| 北海市| 界首市| 延川县| 南投县|