import语句用于导入包中类、接口或静态成员,提升可读性;分单类型导入、按包导入(*)和静态导入(import static)三种,须位于package后、类前,不可在块内使用。

Java 中的 import 语句用于引入其他包中的类、接口或静态成员,让代码更简洁可读。它不参与编译时的类加载,只影响源码层面的名称解析。
单类型导入(最常用)
明确导入某个具体类或接口,避免命名冲突,也便于快速定位依赖。
-
import java.util.ArrayList;—— 导入 ArrayList 类 -
import java.time.LocalDate;—— 导入 LocalDate 类 - 同一文件中不能重复导入相同全限定名,编译器会报错
按包导入(通配符 *)
用 * 一次性导入指定包下所有公共类和接口,但不递归导入子包。
-
import java.util.*;—— 导入 java.util 下所有 public 类(如 ArrayList、HashMap、Scanner),但不包括 java.util.concurrent 或 java.util.stream - 注意:不会增加运行时开销,编译后只保留实际使用的类引用
- 潜在问题:若多个包含同名类(如 java.util.Date 和 java.sql.Date),仍需显式写全限定名或用单类型导入来消歧
静态导入(简化静态成员调用)
使用 import static 可直接使用类的静态字段或方法,无需类名前缀。
立即学习“Java免费学习笔记(深入)”;
-
import static java.lang.Math.PI;→ 可直接写PI -
import static java.lang.System.out;→ 可直接写out.println(...) -
import static java.util.Collections.*;→ 可直接调用sort()、max()等静态方法 - 过度使用会降低可读性,建议仅对高频、无歧义的静态成员使用
import 语句的位置与限制
所有 import 必须位于 package 声明之后、类声明之前,且不区分顺序(但通常按标准风格分组:java. → javax. → 第三方 → 自定义)。
- 不能在类内部、方法内部或条件块中使用 import
- 无法 import 同一包下的类(编译器自动可见),也不需要 import java.lang 下的类(如 String、System、Object),它们被隐式导入
- import 不支持“排除”语法,也没有类似 Python 的
from ... import ... except ...










