📜  C C++中的#include和Java的import之间的区别(1)

📅  最后修改于: 2023-12-03 15:13:44.257000             🧑  作者: Mango

C/C++中的#include和Java的import之间的区别

在C/C++中使用的是#include语句,而在Java中使用的是import语句。虽然这两种语句都可以用于将一个文件中的代码包含到另一个文件中,但它们之间存在着很多区别。

语法结构:

在C/C++中,使用#include可以将头文件包含进来,语法结构如下:

#pragma once
#include <stdio.h>
#include "my_header.h"

#include语句的作用是将另一个文件中的代码内容包含到当前的源代码文件中。可以使用系统预定义的头文件尖括号< >或自定义头文件双引号" "来包含文件。

在Java中,使用import语句可以将指定的类或包引入当前的代码文件中,语法结构如下:

import java.util.ArrayList;
import java.util.Date;

import语句的作用是告诉编译器在哪里寻找程序中使用的类和包。

路径寻找

在C/C++中,如果使用尖括号< >来#include文件,编译器将会到系统指定路径下查找该文件。如果使用双引号" ",则优先在当前源文件所在目录下查找该文件,如果找不到,则到系统指定路径下查找该文件。

在Java中,如果使用类名直接引用类,编译器将会按照一定的规则寻找该类所在的位置。如果使用import语句引入该类,编译器将会在该类所在的包或子包中查找该类。

命名冲突:

在C/C++中,如果对象定义在不同的名称空间中,则不同的名称空间中的名称可以相同。如果#include的文件存在命名冲突,可能引起链接错误。

在Java中,每个类的类名必须在同一个包中是唯一的。如果存在冲突,在程序运行时,可能抛出ClassNotFoundExceptionNoClassDefFoundError等异常。

性能消耗:

在C/C++中,由于#include会将文件的内容直接复制到另一个文件中,所以如果被包含的头文件较大,会增加编译时间和可执行文件的大小。

在Java中,引用类时,只有类名被包括在.class文件中,而不是整个包。当引用类时,即使没有使用该类,也不会增加可执行文件的大小。

总结:

虽然#includeimport都用于包含代码或类,但它们在语义、路径寻找、命名冲突和性能消耗方面存在着很多差异。因此,在使用时,程序员必须根据实际情况进行选择和应用。