0

我读到我们应该使用 Reader/Writer 读取/写入字符数据,使用 InputStream/OutputStream 读取/写入二进制数据。此外,在 java 中字符是 2 个字节。我想知道以下程序是如何工作的。它从标准输入中读取字符,将它们存储在一个字节中并打印出来。两个字节字符在这里如何适合一个字节?

http://www.cafeaulait.org/course/week10/06.html

4

2 回答 2

6

评论解释得很清楚:

// Notice that although a byte is read, an int
// with value between 0 and 255 is returned.
// Then this is converted to an ISO Latin-1 char 
// in the same range before being printed.

所以基本上,这假设传入的字节代表 ISO-8859-1 中的一个字符。

如果您使用具有不同编码的控制台,或者可能提供不在ISO -8859-1 中的字符,您最终会遇到问题。

基本上,这不是好的代码。

于 2013-01-31T21:39:21.300 回答
1

Java 将字符存储为 2 个字节,但对于普通 ASCII 字符,实际数据适合 1 个字节。因此,只要您可以假设正在读取的文件是 ASCII,那么它就可以正常工作,因为字符的实际数值适合单个字节。

于 2013-01-31T21:39:48.037 回答