Java如何决定何时导入?

为什么Java不需要导入像Integer,String等类,而需要导入其他类呢?

有一个java.lang.*的隐式导入。

从Java规范 :

编译单元自动访问其包中声明的所有types,并自动导入预定义包java.lang声明的所有公共types。

java.lang包是默认导入的,不需要显式导入。

java.lang包中的类不需要导入(编译器就像总是导入一样)。 这个包包括核心类,如String,Enum,Runnable,NullPointerException,当然还有像Integer和Double这样的基本包装类。

因为它们属于java.lang.*包。 而且,它由编译器隐式导入。 如果你这样做,那么它不会抱怨你。

java.lang是in-build,隐式地在java中导入,不需要手动导入

由于它包含非常经常使用的类,为了您的方便,它们已经将其导入为可选项

java中的每个类都在一个包中,如果没有定义包,那么它被理解为默认包。 而在包的顶部是java.lang。*,所以我们不需要导入它需要导入其他类。

整数,string等类都存在于默认导入的包java.lang中。