Проблема в операторе System.out.println

Каждый раз, когда мы пишем любой оператор для печати к консоли в программе Java:

System.out.print или System.out.println

В вышеупомянутом оба оператора мы вызываем ссылочную переменную объекта PrintStream, явно не импортируя java.io пакет, поэтому как мы получаем доступ к этому методы объекта, не заканчиваясь никакая ошибка времени компиляции?

5
задан Bill the Lizard 23 January 2010 в 14:09
поделиться

3 ответа

Системный объект имеет ссылки на java.io.printstream объекты, встроенные в него. Таким образом, вам не нужно явно импортировать это - время выполнения может получить эту информацию однозначно, так как она была встроена в совокупность.

Как вы определили, если вы напрямую использовали Printstream объект напрямую, вам придется импортировать это. Этап компиляции не знает, где его найти (это поиск, но это может легко дать неоднозначные результаты).

Примечание также (в случае, если есть какая-то путаница), Java.lang неявно импортируется, поэтому вам не требуется оператор импорта для системы .

6
ответ дан 18 December 2019 в 14:46
поделиться

Вам нужно только импортировать имена классов для тех, которые вы хотите объявить. Так, например:

PrintStream out = System.out;

не будет компилировать, если вы не импортируете java.io.printStream , но вы можете использовать методы от System.out, поскольку он «неявно» импортируется в этот момент Компилятор точно знает, какой тип System.out . На некоторых языках, например, Scala , вам не нужно было бы объявить тип переменной, поскольку он может быть разработан через тип вывода .

4
ответ дан 18 December 2019 в 14:46
поделиться

Импорт - это синтаксический сахар, который позволяет Вам не печатать, например, java.io.File file = new java.io.File("foo.txt") каждый раз, но позволяет набирать File file = new File("foo.txt").

Ничего больше.

Итак, если вам не нужно создавать новый объект или присваивать объект переменной, и вы хотите избежать полного вычеркивания имени класса, вам не нужно делать никаких импортов.

(в приведенном выше рассмотрении интерфейсы рассматриваются как класс под крышкой)

.
3
ответ дан 18 December 2019 в 14:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: