System.in.read实际返回什么?

什么:

System.in.read() 

回报? 该文件说:

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

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

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

input1时产生的字节stream在您的控制台或terminal上input的字节stream包含三个字节{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并点击进入后,(在我的机器上)

 49 48 10 

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

49是1的Unicode点值。

尝试打印:

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

这将帮助你更多地理解它。

当你input10 ,它不是以整数forms读取,而是以stringforms读取,更确切地说是字节数组。

49是字符1的ASCII码。