5

有什么作用:

System.in.read()

返回 ?文档 说:

返回: 数据的下一个字节,如果到达流的末尾,则返回 -1。

但例如,如果我输入:10我回来了49。这是为什么 ?

4

3 回答 3

13

49是 char 的 ASCII 值1。它是第一个字节的值。

当您在控制台或终端上输入时产生的字节10Enter包含三个字节{49,48,10}(在我的 Mac 上,可能以 10,12 或 12 而不是 10 结尾,具体取决于您的系统)。

所以简单片段的输出

int b = System.in.read();
while (b != -1) {
    System.out.println(b);
    b = System.in.read();
}

输入 10 并按 Enter 后,是(在我的机器上)

49
48
10
于 2013-03-07T14:18:17.117 回答
5

System.in.read()只读取一个字节

491的Unicode点值。

尝试打印:

System.out.println((char)49);

这将帮助您更多地了解它。

于 2013-03-07T14:18:34.510 回答
3

当您输入10时,它不是作为整数读取,而是作为字符串读取,或者更准确地说,是字节数组。

49 是字符的 ASCII 码1

于 2013-03-07T14:18:33.010 回答