Java中的import命令

Java中的import命令,java,import,Java,Import,以下命令之间的具体区别是什么: import javax.swing.JPanel; 及 若我使用第二个,编译器将从swing导入所有文件,或者只导入所需的文件,可执行文件的大小是否会有差异?提前感谢第一个将导入该特定包,但第二个将导入swing中的所有包。第一个会更小,因为它只有一个包。第一个只导入 第二个导入中存在的所有类,不包括其子包中的类,例如javax.swing.event包中的类等 import关键字不会直接导入给定的类。它基本上只是将编译器指向类路径中的类,以便能够定位依赖类,

以下命令之间的具体区别是什么:

import javax.swing.JPanel;


若我使用第二个,编译器将从swing导入所有文件,或者只导入所需的文件,可执行文件的大小是否会有差异?提前感谢

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

第一个只导入

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

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

另见

在应用程序的执行方面没有区别。唯一的区别是,在编译时,它可能会稍微慢一点(在大多数情况下是看不到的)。由于代码可读性,许多人更喜欢。*而不是完全限定的包


我自己也问过一次这个问题,我发现这很好。

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

拥有全面的导入只会减少显式列出要导入的所有内容的需要。实际上,这通常是不鼓励的,因为这可能会在以后产生冲突(例如,如果您已经获得了x.y.Foo,而现在您的w.f.*导入中也有w.v.Foo,该怎么办)


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

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

import javax.swing.*;