好吧,如果你讀Reader
/Writer
你可以看到下面的說明文件:
作家班 - 寫方法
寫入單個字符。要寫入的字符在給定整數值的16個低位中包含 ;高位被忽略。
,代碼簡單地做:
public void write(int c) throws IOException {
synchronized (lock) {
if (writeBuffer == null){
writeBuffer = new char[writeBufferSize];
}
writeBuffer[0] = (char) c;
write(writeBuffer, 0, 1);
}
}
所以,在Writer
的情況下,據我所看到的,這可能已經與char
的數據類型。
Reader
另一方面,它的read
方法有責任返回一個字符或流指針的結尾。
文檔說:
讀取器類的範圍內讀出方法
讀取的字符,爲整數0到65535 或-1,如果流的末尾,已達到。
因此,需要比char大的數據類型,在這種情況下使用int。
而且它是這樣實現的:
public int read() throws IOException {
char cb[] = new char[1];
if (read(cb, 0, 1) == -1)
return -1;
else
return cb[0];
}
所以,這第二種情況下證明使用一個更大的數據類型的。
他們在兩個類中使用int的原因可能只是一致性問題。
...因爲計算機中幾乎所有的東西都是數字的,這裏的數字恰好對應於字符序數? – KeithS
哇,非常感謝您的所有快速答案!這幫了我很多! – kwoebber