Консольный ввод фактически читается как последовательность байтов, а не как строка. Это потому, что System.in
представлен API как InputStream
. Типичная упаковка до JDK1.5 (ура для класса Scanner
!) Была примерно такой:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
т.е. InputStreamReader
преобразует поток байтов в поток символов, а затем BufferedReader
используется для выполнения ваших операций readLine()
или чего-либо еще.
Так что это вывод String
, потому что вы получаете буферизованный вывод потока символов из вашего BufferedReader
.