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