Выполняется ли "импорт" в Java так же, как "#include" в C/С++? В частности, будет ли она включать всю библиотеку, которую она импортирует, или она будет включать классы и методы, которые вызывается в следующем коде?
'import' в Java по сравнению с '#include' в C/С++
Ответ 1
#include
не выполняет ни один из них, ни "импортировать" библиотеки, ни классы или модули.
Директива #include
просто сообщает предварительному процессору о включении содержимого другого текстового файла (источника). Это все.
Результат файла предварительной обработки A #include
ing файла B передается компилятору, как если бы он был одним файлом, а файл B вставлен в файл A в положение, в котором была размещена директива #include
.
Чтобы разъяснить это, выполните следующее: Это все происходит ранее для любой компиляции, генерации кода.
В качестве побочного эффекта предварительный процессор C/С++ может использоваться независимо от компилятора для обработки любого типа ввода текстового файла.
Можно утверждать, что предпроцессорные операторы, такие как #include
", на самом деле не являются частью языков C/С++, поскольку они не нужны для написания каких-либо программ в C/С++, поскольку они никогда не передаются в компилятор.
Выражение import
не используется в контексте (стандартного) программирования на C/С++, поскольку импортировать нечего.
Модули C/С++ объединены либо на исходном уровне до, либо компиляции компоновщика после.
Ответ 2
#include<stdio.h>
означает копирование содержимого stdio.h в этом файле,
а import java.util.ArrayList
означает, что вы не можете найти класс в этом файле в указанном выше месте импорта. Импорт Java не увеличивает размер вашего файла, он просто экономит несколько нажатий клавиш.
Ответ 3
В Java, когда вы используете import
, вы импортируете либо:
- один класс:
import foo.bar.Baz
- полный пакет:
import foo.bar.*
- один статический член класса:
import static foo.bar.Baz.GRUT
- каждый статический член класса:
import static foo.bar.Baz.*
Ответ 4
ДирективаC/С++ #include
происходит на этапе предварительной обработки и на простом английском языке означает, что "в этом месте вставьте весь заголовочный файл (или любой текстовый файл, если хотите), который указан как параметр". Новый стандарт С++ будет иметь модули (наконец) и может быть или не быть похожим на импорт Java (зависит от того, как он будет реализован). Подробнее об этом предложении С++: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3347.pdf
Java 8 также улучшит поддержку модульного программирования. См.: http://openjdk.java.net/projects/jigsaw/
Ответ 5
Зависит от того, что вы импортируете. Самый маленький импортируемый объект является классом, самым крупным является пакет.
Поэтому, если вам нужен один класс и импортируйте полный пакет, он доставит полный пакет.
Ответ 6
Я думаю, что один аспект, который другие ответы, возможно, не очистили относительно c,
include в c только копирует заголовочный файл на этапе препроцессора который содержит прототип функции, не более того. Настоящий определение функции по-прежнему находится во времени соединения, после базового кода сборник.
Простую проверку можно выполнить, включив файл заголовка, но не исходный файл и вызывающий функцию из вашего кода. Ошибка компиляции не будет и только во время ссылки она будет жаловаться, что не сможет найти определение.
Ответ 7
import (в Java) аналогичен использованию (в С++) - Как вы понимаете, они не совсем такие же, но очень похожи.
import должен указывать компилятор, где он может найти класс (или дополнительный пакет), используемый в текущем классе.
включить - Свен объяснил это лучше здесь - fooobar.com/questions/18540/...
Ответ 8
include обычно относится к C, С++ lang, где они относятся к платформенно-зависимым языкам и их необходимо скомпилировать, связать и загрузить непосредственно в набор команд машинной команды, но где, поскольку импорт относится к java lang, он имеет независимой от платформы, где он может генерировать байтовый код, а затем он может интерпретироваться в формате двоичного кода.