我读到我们应该使用Reader / Writer来读/写字符数据,使用InputStream / OutputStream来读/写二进制数据。另外,java字符是2个字节。我想知道以下程序是如何工作的。它从标准输入读取字符将它们存储在一个字节中并打印出来。这里两个字节字符如何适合一个字节?
答案 0 :(得分: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,那么您最终会遇到问题。
基本上,这是不是好的代码。
答案 1 :(得分:1)
Java将字符存储为2个字节,但对于普通的ASCII字符,实际数据适合一个字节。因此,只要您可以假设正在读取的文件有ASCII,那么它将正常工作,因为字符的实际数值适合单个字节。