Что на самом деле возвращает 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,

Другие вопросы по тегам