Java中的import命令

时间:2011-01-24 01:06:35

标签: java import

以下命令之间究竟有什么区别:

import javax.swing.JPanel;

import javax.swing.*;

如果我使用第二个,编译器将从swing中导入所有文件或仅导入所需的文件,可执行文件的大小是否有任何差异?提前谢谢

5 个答案:

答案 0 :(得分:4)

第一个只导入javax.swing.JPanel class

第二个导入javax.swing package中存在的所有类,不包括其子包中的类,例如javax.swing.event包中的类等。

import关键字不会直接导入给定的类。它基本上只是将编译器指向要在类路径中出现的类,以便能够找到依赖类,从而成功编译代码。编译类的大小取决于唯一源代码的大小(包括import语句),它不包括导入类的大小。

另见

答案 1 :(得分:1)

您的申请执行方面没有区别。唯一的区别是在编译期间它可能有点(在大多数情况下不明显)较慢。由于代码可读性,很多人更喜欢。*而不是完全限定的包。

我自己也问了这个问题,我发现这个explanation非常好。

答案 2 :(得分:1)

首先,在Java中,您不会生成可执行文件(嗯,您可以,但不能直接生成)。在运行时,JVM将加载程序从磁盘上已有的库运行所需的任何内容,因此您的可执行文件不会增长。

拥有全能导入只会减少明确列出您要导入的所有内容的需要。它实际上经常被劝阻,因为这可能会在以后产生冲突(例如,如果你已经获得了x.y.Foo,现在你的w.f. *导入中也存在w.v.Foo)。

某些IDE(例如Eclipse)可以自动将后者修复为前者。

答案 3 :(得分:0)

第一个将导入该特定包,但第二个将导入所有包。第一个将更小,因为它只是一个包。

答案 4 :(得分:0)

例如,import java.lang。*将导入包java.lang中存在的所有类(但没有子包)。我的意思是我们在项目中真正使用的任何课程,不会导入任何不需要的东西(所以我被教导)。