Подтвердить что ты не робот

'import' в Java по сравнению с '#include' в C/С++

Выполняется ли "импорт" в Java так же, как "#include" в C/С++? В частности, будет ли она включать всю библиотеку, которую она импортирует, или она будет включать классы и методы, которые вызывается в следующем коде?

4b9b3361

Ответ 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, он имеет независимой от платформы, где он может генерировать байтовый код, а затем он может интерпретироваться в формате двоичного кода.