作为一名 Java 开发工程师,你每天都在与各种 Java 标准库打交道。熟练掌握 Java 中的常用 API 是提高代码质量、提升开发效率的关键技能之一。
本文将带你全面了解 Java 开发中最常用的 API 类和接口,包括:
java.lang 包中的核心类(如 String, Object, Math, System)集合框架(Collection, List, Set, Map)多线程相关类(Thread, Runnable, ExecutorService)IO/NIO 流操作(File, InputStream, BufferedReader, Files)时间日期 API(LocalDate, LocalTime, ZonedDateTime, DateTimeFormatter)异常处理(Exception, try-with-resources)工具类(Arrays, Collections, Objects)
并通过丰富的代码示例和真实业务场景讲解,帮助你写出更健壮、更简洁、更具可维护性的 Java 代码。
🧱 一、Java 核心包:java.lang
java.lang 是 Java 最基础的包,JVM 启动时自动加载,无需手动导入。
1. Object —— 所有类的父类
public class Person {
@Override
public String toString() {
return "Person{}";
}
}
✅ 所有类默认继承 Object,常用方法:toString()、equals()、hashCode()、getClass()
2. String —— 不可变字符串
String s = "Hello";
s += " World"; // 实际创建了一个新对象
✅ 字符串拼接建议使用 StringBuilder 或 String.format
String result = String.format("Name: %s, Age: %d", name, age);
3. Math —— 数学运算工具类
int max = Math.max(10, 20);
double sqrt = Math.sqrt(16);
int random = (int) (Math.random() * 100);
4. System —— 系统级操作
long startTime = System.currentTimeMillis();
// do something
long duration = System.currentTimeMillis() - startTime;
✅ System.out.println()、System.exit(0)、System.getProperty() 等也非常常用
📚 二、集合框架:java.util
集合框架是 Java 编程中最常使用的部分之一,主要包括以下几大接口和实现类:
接口实现类特点ListArrayList, LinkedList有序、可重复SetHashSet, TreeSet无序、不可重复MapHashMap, TreeMap, LinkedHashMap键值对结构
示例:
List
names.add("Tom");
names.add("Jerry");
Set
uniqueNumbers.add(1);
uniqueNumbers.add(2);
Map
scores.put("Tom", 90);
scores.put("Jerry", 85);
Java 8+ 新特性支持:
// 使用 Stream API 进行过滤
List
.filter(name -> name.startsWith("T"))
.toList();
// 遍历 Map
scores.forEach((name, score) -> System.out.println(name + ": " + score));
⏱ 三、时间日期 API:java.time
在 Java 8 之前,我们通常使用 Date 和 SimpleDateFormat,但它们存在线程安全问题。Java 8 引入了全新的 java.time 包,推荐使用。
常用类:
类名说明LocalDate本地日期(年月日)LocalTime本地时间(时分秒)LocalDateTime本地日期时间ZonedDateTime带时区的日期时间Duration / Period表示时间间隔DateTimeFormatter格式化/解析日期
示例:
LocalDate today = LocalDate.now();
LocalTime now = LocalTime.now();
LocalDateTime current = LocalDateTime.now();
// 格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatted = current.format(formatter);
// 解析
LocalDateTime parsed = LocalDateTime.parse("2025-07-14 14:30:00", formatter);
📁 四、IO/NIO 操作:java.io 与 java.nio
Java 提供了两种文件读写方式:传统的 java.io 和现代的 java.nio。
1. File 类
File file = new File("data.txt");
if (!file.exists()) {
file.createNewFile();
}
2. BufferedReader —— 逐行读取文本文件
try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
3. Files 工具类(NIO)
Path path = Paths.get("data.txt");
List
Files.write(path, "Hello World\n".getBytes(), StandardOpenOption.APPEND);
🧵 五、多线程编程:java.util.concurrent
Java 支持并发编程,常见类包括:
类名说明Thread线程类Runnable可执行任务接口Callable有返回值的任务接口ExecutorService线程池管理器Future异步计算结果CompletableFuture异步任务编排(Java 8+)
示例:
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(() -> {
System.out.println("Task executed in thread: " + Thread.currentThread().getName());
});
executor.shutdown(); // 关闭线程池
🔄 六、异常处理:Throwable 体系
Java 的异常体系分为两大类:
类型是否必须处理说明Error否虚拟机错误,如 OutOfMemoryErrorException是可控异常,如 IOException、NullPointerException
try-with-resources(Java 7+)
try (FileInputStream fis = new FileInputStream("file.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
🔧 七、实用工具类
1. Arrays —— 数组操作
int[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr); // 排序
boolean found = Arrays.binarySearch(arr, 4) >= 0; // 二分查找
2. Collections —— 集合工具类
List
Collections.reverse(list); // 反转
Collections.shuffle(list); // 打乱顺序
3. Objects —— 对象工具类
String str = null;
System.out.println(Objects.toString(str, "default")); // 输出 default
System.out.println(Objects.equals(null, str)); // 安全比较
💡 八、实际应用场景与案例解析
场景1:读取配置文件并构建 Map
Map
try (BufferedReader reader = new BufferedReader(new FileReader("config.properties"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split("=");
if (parts.length == 2) {
config.put(parts[0], parts[1]);
}
}
} catch (IOException e) {
e.printStackTrace();
}
场景2:定时任务调度
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(() -> {
System.out.println("执行定时任务:" + LocalDateTime.now());
}, 0, 1, TimeUnit.SECONDS);
场景3:异步处理用户注册逻辑
CompletableFuture
// 发送邮件或短信
sendWelcomeEmail("user@example.com");
});
future.exceptionally(ex -> {
log.error("发送失败", ex);
return null;
});
🚫 九、常见错误与注意事项
错误正确做法使用 == 判断字符串内容是否相等应使用 .equals()在多线程环境下使用 SimpleDateFormat应使用 DateTimeFormatter修改正在遍历的集合使用迭代器或复制后再修改忽略关闭资源(如流、连接)使用 try-with-resources忽略空指针异常使用 Optional 或 Objects 工具类使用 Thread.sleep() 替代定时任务应使用 ScheduledExecutorService在 Lambda 中修改外部变量外部变量应为 final 或等效不变量
📊 十、总结:Java 常用 API 一览表
类/接口所属包主要用途Objectjava.lang所有类的基类Stringjava.lang字符串处理Mathjava.lang数学运算Systemjava.lang系统操作List/Set/Mapjava.util集合操作Streamjava.util.stream函数式集合操作LocalDate/Timejava.time时间日期处理File/BufferedReaderjava.io文件读写Filesjava.nio.fileNIO 文件操作Thread/Runnablejava.lang多线程ExecutorServicejava.util.concurrent线程池CompletableFuturejava.util.concurrent异步编程Exceptionjava.lang异常处理Arrays/Collectionsjava.util集合工具Objectsjava.util对象工具
📎 十一、附录:API 使用技巧速查表
功能示例字符串格式化String.format("Name: %s", name)集合排序Collections.sort(list)获取当前时间LocalDateTime.now()读取文件全部内容Files.readAllLines(path)写入文件Files.write(path, content.getBytes())创建线程池Executors.newFixedThreadPool(n)异步任务CompletableFuture.supplyAsync(() -> ...)安全比较对象Objects.equals(a, b)判空处理Optional.ofNullable(obj).ifPresent(...)遍历 Mapmap.forEach((k, v) -> ...)
如果你正在准备一篇面向初学者的技术博客,或者希望系统回顾 Java 基础知识,这篇文章将为你提供完整的知识体系和实用的编程技巧。
欢迎点赞、收藏、转发,也欢迎留言交流你在实际项目中遇到的 API 相关问题。我们下期再见 👋
📌 关注我,获取更多Java核心技术深度解析!