简体   繁体   中英

What does System.in.read actually return?

What does :

System.in.read()

return ? The documentation says :

Returns: the next byte of data, or -1 if the end of the stream is reached.

But for example if I enter : 10 I get back 49 . Why is that ?

49 is the ASCII value of the char 1 . It is the value of the first byte.

The stream of bytes that is produced when you enter 1 0 Enter on your console or terminal contains the three bytes {49,48,10} (on my Mac, may end with 10,12 or 12 instead of 10, depending on your System).

So the output of the simple snippet

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

after entering a 10 and hitting enter, is (on my machine)

49
48
10

System.in.read() reads just one byte .

49 is the Unicode point value for 1 .

Try to print:

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

This will help you to understand it more.

When you enter 10 , it is not read as an integer but as a String or, more precisely here, an array of bytes.

49 is the ASCII code for the character 1 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM