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

问题描述:

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

System.in.read() 

return?该documentation说:

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

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

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

流,当你进入 您的控制台上输入或终端包含三个字节{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 
+0

为什么不读取整个'10'? – saplingPro 2013-03-07 14:21:27

+0

因为'10'是两个字节。表示字符1的字节,后跟表示字符“0”的字节。 – 2013-03-07 14:24:51

+0

@saplingPro'System.in.read()'只读取一个字节。 – Maroun 2013-03-07 14:24:55

当你进入10,它不被读取作为整数,但是作为一个字符串,或者更确切地说是一个字节数组。

49是字符1的ASCII码。

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

为的的Unicode点值。

尝试打印:

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

这将帮助你更了解它。