如果Java没有预处理器,什么是;进口;

如果Java没有预处理器,什么是;进口;,java,language-features,Java,Language Features,这意味着2.2.1中不再有typedef、Defines或预处理器。在C++中,代码>包含/>代码>是预处理器的一部分。什么是导入?导入尽管名称没有“导入”任何内容,但它只允许您调用没有完全限定名称的类 为了澄清,如果我执行import java.util.ArrayList,现在我可以将ArrayList类称为ArrayList。如果我不这样做,我仍然可以使用这个类,我只需要调用它java.util.ArrayList 如果使用*导入整个包,最糟糕的情况是会发生名称冲突,因此,必须使用全名来引

这意味着2.2.1中不再有typedef、Defines或预处理器。在C++中,<>代码>包含/>代码>是预处理器的一部分。什么是导入?

导入尽管名称没有“导入”任何内容,但它只允许您调用没有完全限定名称的类

为了澄清,如果我执行
import java.util.ArrayList
,现在我可以将
ArrayList
类称为
ArrayList
。如果我不这样做,我仍然可以使用这个类,我只需要调用它
java.util.ArrayList

如果使用
*
导入整个包,最糟糕的情况是会发生名称冲突,因此,必须使用全名来引用Java类,但在运行时不会使用更多内存

java.lang
中的类将自动“导入”

引入了Java1.5,它使程序员能够引用导入的静态成员,就好像它们是在使用它们的类中声明的一样。它们应该少用。可以接受的用法是导入JUnit断言方法。例如,对于传统导入:

import org.junit.Assert;
...
Assert.assertEquals(expected, actual);
使用静态导入:

import static org.junit.Assert.assertEquals;
...
assertEquals(expected, actual);

导入允许您使用非限定的类名。例如,使用
import java.util.ArrayList
可以在代码中使用非限定类型名
ArrayList
。如果没有import语句,则必须始终使用完全限定名:
java.util.ArrayList


还有静态导入,它将静态类元素带入编译单元的名称空间。

告诉编译器您正在使用另一个包中的某个类的方法


编辑:

import
在使用包的文件中显示包名。它根本无法与C的
#include

相比,因为严格的源代码命名约定,Java编译器可以很容易地从包和类的完全限定名称中找到相应的源文件或类文件。完全限定名指的是指定完整的包和类,例如

java.util.ArrayList x = new java.util.ArrayList ();
这种冗长的编码风格的替代方法是使用import语句

import java.io.*;
import java.util.ArrayList;
ArrayList x = new java.util.ArrayList();

<> P>这也是理解别人代码的一个很大帮助,值得注意的是,C++中的相似关键词是<>代码>使用< /C++ >。在C/C++中,我指的是
#include“…”
include
:)