Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

System.in.read() или всё же Scanner?

#java #scanner


Заметил во многих книгах используется: System.in.read() - это получить что-то с клавиатуры.
Почему там допустим не используется класс Scanner? Потому что System.in.read() это
быстрее, нежели чем создавать экземпляр класса Scanner и далее создавать вот такую
конструкцию:

Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();


или же 

Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();


Поискал на Stackoverflow и не нашел отличия System.in.read и класса Scanner. 
    


Ответы

Ответ 1



Разница есть, и притом, существенная. System.in.read() может считать только 1 символ в виде char. В то же время, Scanner - это универсальная штука, позволяющая считывать в том формате, что надо. Если требуется считать по символам, то не следует заморачиваться, а использовать System.in.read(). В остальных случаях - это, в частности и файлы, используем Scanner.

Ответ 2



Потому что искусство подачи учебной информации включает умение рассказывать только о том, что относится к теме, без привлечения дополнительных сущностей. Если тема относится к основам считывания данных из потока ввода, то объяснять это через использование токенизатора - это усложнение и отвлечение.

Комментариев нет:

Отправить комментарий