Java import语句的用法(附带实例)
Java 程序中,import 语句允许使用类,而无须使用类的完全限定名称。
例如,在使用以下语句后,就可以直接在代码中使用 Random 而不是 java.util.Random:
将 import 语句放在源文件中第一个类声明上方,但放在 package 语句下方。可以使用通配符从包中导入所有类:
当导入多个包时,可能存在名称冲突。例如,包 java.util 和 java.sql 都包含 Date 类,假设导入这两个包:
如果程序不使用 Date 类,那么没有什么问题。但是如果使用了 Date 类,但没有添加包名,编译器就会报错。在这种情况下,可以导入需要的特定类:
注意,import 语句为编程人员提供了方便。在类文件中,所有类名都是完全限定的。此外,import 语句与 C 和 C++ 语言中的 #include 完全不一样。该指令包含用于编译的头文件。导入不会导致文件重新编译,只是缩短名称,类似 C++ 语言的 using 语句。
例如,如果在源文件顶部添加以下指令:
就可以使用 Math 类的静态方法和静态变量,而不必使用类名前缀:
还可以导入特定的静态方法或静态变量:
例如,在使用以下语句后,就可以直接在代码中使用 Random 而不是 java.util.Random:
import java.util.Random;注意,import 声明只是一种提供便利的手段,并不是必需的。甚至可以删除所有的导入声明,然后在所有的地方都使用完全限定的类名,示例如下:
private java.util.Random generator = new java.util.Random();
将 import 语句放在源文件中第一个类声明上方,但放在 package 语句下方。可以使用通配符从包中导入所有类:
import java.util.*;通配符只能导入类,而不能导入包。也就是说,不能使用 import java.* 来导入以 java 为前缀的所有包。
当导入多个包时,可能存在名称冲突。例如,包 java.util 和 java.sql 都包含 Date 类,假设导入这两个包:
import java.util.*; import java.sql.*;
如果程序不使用 Date 类,那么没有什么问题。但是如果使用了 Date 类,但没有添加包名,编译器就会报错。在这种情况下,可以导入需要的特定类:
import java.util.*; import java.sql.*; import java.sql.Date;如果确实需要同时使用这两个类,那么必须至少为其中一个类使用完全限定名称。
注意,import 语句为编程人员提供了方便。在类文件中,所有类名都是完全限定的。此外,import 语句与 C 和 C++ 语言中的 #include 完全不一样。该指令包含用于编译的头文件。导入不会导致文件重新编译,只是缩短名称,类似 C++ 语言的 using 语句。
Java import静态导入
import 语句允许导入静态方法和静态变量。例如,如果在源文件顶部添加以下指令:
import static java.lang.Math.*;
就可以使用 Math 类的静态方法和静态变量,而不必使用类名前缀:
area = 4 * PI * pow(r, 2); // that is, Math.PI, Math.pow
还可以导入特定的静态方法或静态变量:
import static java.lang.Math.PI; import static java.lang.Math.pow;注意,在 Java 中使用静态导入声明导入 java.util.Comparator 和 java.util.stream.Collectors 是很常见的,它们提供大量的静态方法。