在大多数代码示例中我看到人们这样做。
import javax.swing.*; // for the frame
import java.awt.*; // for the checkBox and the label
import java.awt.event.*; // for the checkBox listener
如果我说的 import java.awt.* 是正确的,它会导入其中的所有内容,所以不需要说 import java.awt.event.*;或者速度有提高吗?任何人都可以解释一下导入库的作用,是导入一个简单的文本类以包含在源代码中,还是告诉 jvm 包含导入的任何内容的字节码?所以在java中导入除了切换命名空间之外什么也不做,这样我就不必输入长类名了?
忘记术语子包。快点做吧。它在java世界中不存在。
java.awt
是一个包(命名空间),java.awt.event
是另一个包,它们没有任何共同点。他们的名字有一些共同的字符,但包完全不相关。 import 语句从一个包(命名空间)导入一个或多个类。如果您需要来自不同包(命名空间)的类,那么您必须添加另一个导入语句。
顺便说一句,回应另一个答案的评论:您不必使用 import 语句。如果您不使用它们,您只需在 java 源文件中使用完全限定的类名(除了:来自
java.lang
的类和当前包会自动导入)。因此 import
可以被认为是保持代码可读性的便捷方法。
为了在源文件中使用类,不需要导入。
import java.awt.*;
...并不意味着所有子包也将被导入。您必须显式导入每个包。例如,导入 java.* 不会为您提供整个 java 库。就其价值而言,我建议仅导入特定的类,除非您有充分的理由使用 *.
导入也涉及到切换命名空间。
如果您只有
import java.awt.*
并且要使用
java.awt.Outer.Inner
类,则在代码中的任何地方都必须将其称为
Outer.Inner
。相比之下,当您说
import java.awt.Outer.*
时,您可以将内部类称为
Inner
。