Что действительно возвращает System.in.read?

Что значит :

System.in.read() 

вернуть ? В документации говорится:

Возвращает: следующий байт данных или -1, если конец streamа достигнут.

Но, например, если я вхожу: 10 я возвращаюсь 49 . Почему это ?

49 – значение ASCII символа 1 . Это значение первого байта.

Поток байтов, который создается при вводе 1 0 Введите на свою консоль или терминал три байта {49,48,10} (на моем Mac, может закончиться с 10,12 или 12 вместо 10, в зависимости от вашей системы ).

Таким образом, вывод простого fragmentа

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

после ввода 10 и ввода удара, (на моей машине)

 49 48 10 

System.in.read() читает только один байт .

49 – значение Unicode для 1 .

Попробуйте распечатать:

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

Это поможет вам понять это больше.

Когда вы вводите 10 , он не читается как целое число, а как строка или, точнее, массив байтов.

49 – код ASCII для символа 1 .

Давайте будем гением компьютера.