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

sap*_*Pro 5 java java-io

什么:

System.in.read()
Run Code Online (Sandbox Code Playgroud)

回来?该文件 说:

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

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

And*_*s_D 13

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

当您输入所产生的字节10Enter控制台或终端包含3个字节{49,48,10}(我的Mac上,可以用10,12或12,而不是10结束,取决于你的系统).

所以简单片段的输出

int b = System.in.read();
while (b != -1) {
    System.out.println(b);
    b = System.in.read();
}
Run Code Online (Sandbox Code Playgroud)

进入10并打入后,是(在我的机器上)

49
48
10
Run Code Online (Sandbox Code Playgroud)

  • @saplingPro需要意识到的是,当你输入"10"时,你不会输入_number_10,而是_text_恰好是"10"但可能是"foo"甚至"☃正在融化!".`System.in`看到的是这个_text_流的字节.对于ascii和扩展的ascii(所以,不是那里的小雪人),请访问http://www.ascii-code.com (2认同)

Mar*_*oun 5

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

49Unicode的为点值1.

尝试打印:

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

这将有助于您更多地了解它.