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 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
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.