好吧,如果你读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