Java 标准库详解

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 线程不安全——新代码用 DateTimeFormatter

13. 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.5

18. 模块系统速记(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)
JSONJDK 无——用 Jackson/Gson(外部)
集合排序List.sort + Comparator
并发java.util.concurrent.*
随机数ThreadLocalRandom
Base64java.util.Base64
压缩java.util.zip.GZIPInputStream
正则java.util.regex.Pattern(预编译)
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇