Для чтения символа с клавиатуры достаточно вызвать метод System.in.read()
, где System. in
- объект ввода (с клавиатуры), дополняющий объект вывода System.out
.
Давайте разберемся:
System.in.read()
- System
это класс, in
это переменная-константа, read()
- это метод. Хотелось бы спросить почему в книге написано вот так:
Для чтения символа с клавиатуры достаточно вызвать метод System.in.read(), где System. in - объект ввода (с клавиатуры)
Почему System.in
объект ввода? Почему не написано что за "входящий поток" отвечает константа in
класса System
, а написано что это объект ввода?
Просто под объектом я представляю экземпляр класса, то есть аля:
System systemObj = new System();
Где systemObj
является объектом. Можно по подробнее?
Любая переменная/поле в Java - это либо примитив, либо null, либо экземпляр какого-то класса. Третьего не дано. Очевидно, что System.in
не является ни примитивом, ни null. Значит, это экземпляр какого-то класса.
Более точно, это экземпляр класса FileInputStream
. Потому что в современных ОС потоки стандартного ввода-вывода ведут себя как предварительно открытые файлы. Создать аналогичный объект вы можете самостоятельно вот так:
InputStream myIn = new FileInputStream(FileDescriptor.in);
Потому что "входящий поток" - это тоже объект. Если открыть исходный код System, то можно увидеть, что in
- это переменная типа InputStream. То есть в рантайме в ней хранится объект класса InputStream
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
На данный вопрос уже ответили:
В коде есть геттеры/сеттеры, IntelliJ все время выдает warning и пишет, что access can be private-packageНо если я сделаю доступ private, то у меня в коде будут ошибки
Нужно перемножить все числа с индексами в диапазоне от 20 до 30
Не срабатывают boundary timersИспользую Activiti 6