好吧,如果您阅读Reader
/的文档,Writer
您可以看到以下说明:
Writer 类 - 写入方法
写入单个字符。要写入的字符包含在给定整数值的低 16 位中;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
另一方面, int 它的方法read
负责返回一个字符或流指示符的结尾。
文档说:
Reader 类读取方法
读取的字符,为 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 的原因可能只是一致性问题。