Что на самом деле возвращает System.in.read?
Что значит:
System.in.read()
вернуть? В документации сказано:
Возвращает: следующий байт данных или -1, если достигнут конец потока.
Но, например, если я введу: 10
Я вернусь 49
, Это почему?
3 ответа
49
является значением ASCII символа 1
, Это значение первого байта.
Поток байтов, который создается при вводе 10Enter на вашей консоли или терминале, содержит три байта {49,48,10}
(на моем Mac может заканчиваться 10,12 или 12 вместо 10, в зависимости от вашей системы).
Итак, вывод простого фрагмента
int b = System.in.read();
while (b != -1) {
System.out.println(b);
b = System.in.read();
}
после ввода 10 и нажатия Enter, есть (на моей машине)
49
48
10
System.in.read()
читает только один байт.
49 - это значение точки Unicode для 1.
Попробуйте напечатать:
System.out.println((char)49);
Это поможет вам понять это больше.
Когда вы вводите 10
, он не читается как целое число, а как строка или, точнее, здесь массив байтов.
49 - код ASCII для символа 1
,