java.lang包中有一些基本类,在代码中访问这些公开的类、接口可以直接用简单的名字访问,而不需要用import语句显式导入。
先看下面两段示例代码,这两段代码的执行效果是一样的。
示例代码1–访问Math类的时候直接写简单的名字,而且没有用import语句从java.lang包中显式导入:
public class Test5 {
public static void main(String[] args) {
System.out.println(Math.PI);
}
}
示例代码2–访问Math类的时候直接写简单的名字,但是用import语句从java.lang包中显式导入:
import java.lang.Math;
public class Test5 {
public static void main(String[] args) {
System.out.println(Math.PI);
}
}
对此,我以前也有疑问,为什么使用JDK的类的时候,有的需要用import导入,有的不导入也能使用?但也没有去深究,毕竟也不影响我使用。
今天在看Java的Compilation Units的时候,无意中找到了答案。原因是每个编译单元隐式地导入了java.lang包中的公开类、接口,就好像紧挨着包的声明下面使用了import java.lang.*;语句一样,所以,我们在使用java.lang包中的公开类、方法的时候可以使用简单的名字。
https://docs.oracle.com/javase/specs/jls/se19/html/jls-7.html#jls-7.3