版本:基于 Java 17 & Java 21 LTS
在掌握了面向对象的核心思想后,接下来的重点是学会使用 Java 标准库中提供的强大工具。本篇将聚焦于开发中最常用的 API,并重点介绍现代 Java (8+) 带来的革新。
1. 字符串处理 (String, StringBuilder)
1.1 现代 String 新方法 (Java 11+)
var str = " Java 21 ";
System.out.println(str.isBlank()); // 判断是否为空白(全空格也算)
System.out.println(str.strip()); // 去除首尾空格(比 trim() 更智能,支持 Unicode)
System.out.println("Hi ".repeat(3)); // 重复字符串1.2 字符串拼接
如果是频繁拼接,请使用 StringBuilder 以获得更好的性能。
2. 现代日期时间 API (java.time)
请彻底抛弃陈旧的 Date 类。Java 8 引入的 java.time 包是线程安全且易于使用的。
import java.time.*;
import java.time.format.DateTimeFormatter;
// 1. 获取当前时间
var now = LocalDateTime.now();
// 2. 自定义格式化
var formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(now.format(formatter));
// 3. 计算时间差
var start = LocalDate.of(2024, 1, 1);
var end = LocalDate.now();
Period period = Period.between(start, end);
System.out.println("相差月数: " + period.getMonths());3. 数学与工具类 (Math, BigDecimal)
3.1 Math 类常用方法
Math.abs(-10); // 绝对值
Math.max(10, 20); // 最大值
Math.sqrt(16); // 开平方
Math.random(); // [0.0, 1.0) 随机数3.2 浮点数精确计算:BigDecimal
在涉及金融、货币计算时,严禁使用 float 或 double,必须使用 BigDecimal。
import java.math.BigDecimal;
import java.math.RoundingMode;
var a = new BigDecimal("0.1");
var b = new BigDecimal("0.2");
var sum = a.add(b); // 0.3
// 除法需指定精度和舍入模式,否则可能抛出 ArithmeticException
var div = a.divide(b, 2, RoundingMode.HALF_UP);4. Optional:优雅处理空指针 (Java 8+)
Optional 类提供了一种显式处理“值可能为空”的方法。
import java.util.Optional;
var user = Optional.ofNullable(findUser());
user.ifPresent(u -> System.out.println("用户存在: " + u));
String name = user.orElse("默认用户");5. 生成随机数:Random 与 ThreadLocalRandom
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
// 现代写法:线程安全的随机数生成
int randomInt = ThreadLocalRandom.current().nextInt(1, 101); // [1, 100]本章小结
第六篇我们深度学习了:
现代
String的高效操作与新方法。彻底替代旧版日期类的
java.timeAPI。BigDecimal:金融级精确计算的标配。
使用
Optional优雅地终结空指针风险。多线程环境下的随机数生成。
下一篇预告:异常处理与资源管理 (Try-with-resources, 异常链)