Java 标准库按包速查:每个包给定位、高频类与惯用法。JDK 附带的这套库是「Java 生态的地基」,本篇覆盖日常工程 90% 会碰到的包。
1. java.lang – 语言核心(免 import)
描述
String/Math/包装类/System/Thread/Enum/Record 所在地;编译器自动导入。
语法和示例
// 全部免 import:
String s; Integer i; Math.max(1,2);
System.out.println(); Thread.currentThread();
new Thread(() -> run()).start();
Thread.sleep(1000); // 受检 InterruptedException
Thread.ofVirtual().start(task); // 21+ 虚拟线程2. java.util – 集合与工具
描述
集合框架(List/Set/Map/Queue)+ Arrays/Collections/Objects/Optional/UUID/Scanner。
语法和示例
var uuid = UUID.randomUUID();
var sc = new Scanner(System.in);
int n = sc.nextInt();
var arr = new int[]{3,1,2};
Arrays.sort(arr);
var joiner = new StringJoiner(", ", "[", "]");
joiner.add("a").add("b"); // [a, b]
// Base64:
var b64 = java.util.Base64.getEncoder().encodeToString(bytes);3. java.util.concurrent – 并发
描述
ExecutorService/CompletableFuture/并发集合/Atomic/锁与同步器。
语法和示例
var pool = Executors.newFixedThreadPool(4); // 简单场景
var manual = new java.util.concurrent.ThreadPoolExecutor(
4, 8, 60, java.util.concurrent.TimeUnit.SECONDS,
new java.util.concurrent.ArrayBlockingQueue<>(100),
new java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy());
CompletableFuture.supplyAsync(() -> fetch(), pool)
.thenApply(this::parse).exceptionally(e -> fallback);
var counter = new java.util.concurrent.atomic.AtomicInteger();
counter.incrementAndGet(); counter.compareAndSet(0, 1);
var latch = new java.util.concurrent.CountDownLatch(3);
latch.countDown(); latch.await();4. java.util.stream – Stream API
描述
与集合配合的声明式管道;原始流 IntStream/LongStream 避免装箱。
语法和示例
IntStream.range(0, 10).filter(x -> x % 2 == 0).toArray();
Stream.of("a", "b").collect(Collectors.toList());
list.parallelStream() // 大数据量 CPU 密集才用
.mapToLong(Item::weight).sum();
Files.lines(path) // 流式读文件
.filter(l -> !l.isBlank()).count();5. java.io – 传统 IO
描述
字节流 InputStream/OutputStream 与字符流 Reader/Writer;装饰器层层包。
语法和示例
try (var in = new BufferedInputStream(
new FileInputStream("a.bin"))) {
in.readAllBytes();
}
try (var r = new BufferedReader(new FileReader("a.txt"))) {
r.lines().forEach(System.out::println);
}
try (var w = new PrintWriter(new FileWriter("out.txt"))) {
w.println("hi");
}
// System.in 的 Scanner:new Scanner(System.in).nextLine()6. java.nio.file – 现代 IO(Files/Path)
描述
Path 代替 File;Files 一个类覆盖读写/拷贝/遍历/监控。
语法和示例
import java.nio.file.*;
Path p = Path.of("data", "a.txt");
Files.exists(p); Files.size(p);
Files.readString(p); // 整读(UTF-8 默认)
Files.writeString(p, "内容");
Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
try (var walk = Files.walk(Path.of("logs"))) {
walk.filter(f -> f.toString().endsWith(".log"))
.forEach(this::archive);
}
Files.createDirectories(Path.of("x/y"));
Files.deleteIfExists(p);7. java.time – 日期时间
描述
不可变设计;三大族:LocalXxx(无时区)/ZonedDateTime(带区)/Instant(UTC 点)。
语法和示例
LocalDate.now(); LocalTime.now();
LocalDateTime.now();
ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
Instant.now().getEpochSecond();
DateTimeFormatter.ofPattern("yyyyMMdd")
.format(LocalDate.now());
LocalDate.parse("20261029",
DateTimeFormatter.ofPattern("yyyyMMdd"));
Clock.systemUTC(); // 可注入便于测试8. java.net.http – HttpClient(11+)
描述
同步/异步/HTTP2;取代老旧 HttpURLConnection。
语法和示例
var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder(URI.create("https://example.com"))
.header("Accept", "application/json")
.timeout(java.time.Duration.ofSeconds(10))
.GET().build();
var resp = client.send(req, HttpResponse.BodyHandlers.ofString());
resp.statusCode(); resp.body();
// 异步:
client.sendAsync(req, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);9. java.net – 网络基础
描述
URI/URL/InetAddress/Socket/ServerSocket;代理与编码工具。
语法和示例
InetAddress.getByName("blog.x-rush.cn").getHostAddress();
var uri = URI.create("https://a.b/x?a=1");
var enc = URLEncoder.encode("中文", StandardCharsets.UTF_8);
URLDecoder.decode(enc, StandardCharsets.UTF_8);
try (var server = new ServerSocket(8080);
var sock = server.accept()) {
sock.getInputStream().readAllBytes();
}10. java.sql / JDBC
描述
DriverManager/Connection/PreparedStatement/ResultSet;生产用连接池(HikariCP)。
语法和示例
try (var conn = DriverManager.getConnection(url, user, pass);
var ps = conn.prepareStatement("SELECT id FROM t WHERE k = ?")) {
ps.setString(1, key);
try (var rs = ps.executeQuery()) {
while (rs.next()) rs.getLong("id");
}
}11. java.security / javax.crypto
描述
MessageDigest 摘要;SecretKey AES;SecureRandom 强随机。
语法和示例
var md = java.security.MessageDigest.getInstance("SHA-256");
md.digest(data);
var rnd = java.security.SecureRandom.getInstanceStrong();
rnd.nextInt(100);
// AES-GCM 示例骨架(完整实现查官方文档):
// Cipher.getInstance("AES/GCM/NoPadding")12. java.text – 格式化
描述
NumberFormat/DecimalFormat/SimpleDateFormat(线程不安全,改用 DateTimeFormatter)。
语法和示例
var df = new java.text.DecimalFormat("#,##0.00");
df.format(1234567.891); // 1,234,567.89
NumberFormat.getCurrencyInstance(java.util.Locale.CHINA)
.format(99.5); // ¥99.50
// SimpleDateFormat 线程不安全——新代码用 DateTimeFormatter13. java.lang.reflect / 注解
描述
运行时元数据;框架的基石;直接业务少用。
语法和示例
Class<?> c = obj.getClass();
c.getName(); c.getMethods();
var f = c.getDeclaredField("name");
f.setAccessible(true); // 私有可写(模块系统有限制)
for (var a : f.getAnnotations()) {}
c.isAnnotationPresent(Deprecated.class);14. java.util.function – 函数接口
描述
Predicate/Function/Supplier/Consumer/BiXxx;方法引用四式。
语法和示例
Function<String, Integer> len = String::length;
Predicate<String> empty = String::isEmpty;
Supplier<List<String>> mk = ArrayList::new;
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
// 方法引用:类::静态 / 对象::方法 / 类::new / 类::实例方法15. java.util.regex – 正则
描述
Pattern 预编译复用;matches/find/split/replaceAll;命名组 (?)。
语法和示例
var p = java.util.regex.Pattern.compile("(\w+)@(\w+)");
var m = p.matcher("a@b cc@d");
while (m.find()) m.group(1);
"a1b2".replaceAll("\\d", "#");
var named = java.util.regex.Pattern.compile("(?<year>\d{4})-(?<mon>\d{2})");
named.matcher("2026-10").results()
.forEach(r -> r.group("year"));16. java.util.logging 与日志选型
描述
JUL 是内置但生态常用 SLF4J + Logback;本条给 JUL 最低可用集。
语法和示例
var log = java.util.logging.Logger.getLogger("app");
log.setLevel(java.util.logging.Level.INFO);
log.info("started {0}", name);
// 生产工程建议:SLF4J 门面 + Logback 实现(外部库,不在 JDK)17. java.text.Collator / Locale – 国际化
描述
按地区排序与格式化;中文排序必须 Collator。
语法和示例
var cn = java.text.Collator.getInstance(java.util.Locale.CHINA);
words.sort(cn); // 按拼音序
var nf = NumberFormat.getInstance(java.util.Locale.US);
nf.format(1234.5); // 1,234.518. 模块系统速记(JPMS,9+)
描述
module-info.java 声明依赖与导出;类路径应用可不动,新库建议模块化。
语法和示例
// src/module-info.java:
module com.example.app {
requires java.net.http;
exports com.example.api; // 只导出 api 包
}19. 常用包速查表
描述
按场景直查。
| 场景 | 用哪个 |
|---|---|
| 读文件 | java.nio.file.Files |
| 写文件 | Files.writeString / PrintWriter |
| HTTP 客户端 | java.net.http.HttpClient(11+) |
| 日期 | java.time.LocalDateTime / Instant |
| 金额 | BigDecimal(java.math) |
| JSON | JDK 无——用 Jackson/Gson(外部) |
| 集合排序 | List.sort + Comparator |
| 并发 | java.util.concurrent.* |
| 随机数 | ThreadLocalRandom |
| Base64 | java.util.Base64 |
| 压缩 | java.util.zip.GZIPInputStream |
| 正则 | java.util.regex.Pattern(预编译) |