What does :
System.in.read()
return ? The documentation says :
Returns: the next byte of data, or -1 if the end of the
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.
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 10Enter 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
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
.