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

157
25 марта 2019, 05:20

Заметил во многих книгах используется: 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.

Answer 1

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

Answer 2

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

READ ALSO
Операторы или Циклы?

Операторы или Циклы?

В книгах вижу часто вот такое: оператор if, оператор switch и тдТак же вижу слова аля: в этом цикле if или в этом цикле for работает так и вот так

176
Алгоритм сортировки большого файла с со сложностью приближенной к O(2n)

Алгоритм сортировки большого файла с со сложностью приближенной к O(2n)

Есть файл размером 1Гб который содержит FLOAT в бинарном виде, те

171
Freemarker. Как вызвать java-метод в template из переданного java Document в качестве модели?

Freemarker. Как вызвать java-метод в template из переданного java Document в качестве модели?

FreemarkerПередаю в качестве модели Java-объект класса и привязываю его к "doc"

151