import语句仅为编译期提供全限定名简写,不导入类也不影响运行时;支持单类型、静态、通配符三种导入方式,同名类需显式指定全限定名消歧义。

Java 的 import 语句本身不“导入”类到当前文件,而是为编译器提供类的**全限定名(Fully Qualified Name)的简写方式**,让代码中可以使用简单类名来引用外部类。
import 的本质是命名空间简化
Java 中每个类都有唯一全限定名,格式为:包名.类名(如 java.util.ArrayList)。如果不写 import,你仍可直接用全限定名使用该类:
public class Test {
public static void main(String[] args) {
java.util.ArrayList<String> list = new java.util.ArrayList<>();
}
}
这样写完全合法,但冗长易错。import 就是告诉编译器:“以后看到 ArrayList,就默认指 java.util.ArrayList”。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
import 的三种常见写法
-
单类型导入:导入指定一个类
import java.util.Scanner;
之后可直接写Scanner sc = new Scanner(System.in); -
静态导入(static import):导入类的静态成员(方法或字段)
import static java.lang.Math.PI;或import static java.lang.System.out;
之后可直接写out.println("Hello");或sqrt(4)(需配合import static java.lang.Math.sqrt;) -
通配符导入(*):导入某个包下所有公共类
import java.util.*;
可使用ArrayList、HashMap等,但不会递归导入子包(如java.util.concurrent.*需单独写)
import 不影响运行时,也不加载类
import 是纯编译期机制:
立即学习“Java免费学习笔记(深入)”;
- 编译完成后,字节码中只保留全限定名,import 语句彻底消失
- 类是否被加载,取决于运行时是否首次主动使用(如 new、调用静态方法等),和 import 无关
- import 同名类会导致编译错误,例如同时写:
import java.util.Date;import java.sql.Date;
再写Date d = new Date();就会报错 —— 编译器无法推断你要哪个,必须显式用全限定名消歧义
不写 import 也能用外部类的几种情况
- 同一个包下的类,无需 import(默认在同一名字空间)
-
java.lang包中的类(如String、System、Object)被自动导入,无需显式写 import - 使用全限定名(如前文
java.util.ArrayList),绕过 import 机制

















