目录
字符串处理:String、StringBuilder 与 StringJoiner
1. String 类
2. StringBuilder 类
3. StringJoiner 类(Java 8+)
集合框架:List、Set、Map 与 Stream API
1. List 接口(有序、可重复)
2. Set 接口(无序、不可重复)
3. Map 接口(键值对)
4. Stream API(Java 8+)
输入输出(IO/NIO)
1. 传统 IO(字节流与字符流)
2. NIO(New IO,Java 7+)
多线程与并发:Thread、ExecutorService 与 CompletableFuture
1. Thread 与 Runnable
2. 线程池(ExecutorService)
3. CompletableFuture(Java 8+)
日期与时间处理:java.util.Date 与 java.time(Java 8+)
1. 传统 Date 类(已过时)
2. Java 8 时间 API(推荐)
数学运算:Math、BigDecimal 与 Random
1. Math 类
2. BigDecimal 类
3. Random 类
工具类:Arrays、Collections 与 Objects
1. Arrays 类
2. Collections 类
3. Objects 类
结语:类库学习的最佳实践
Java 提供了丰富的标准类库(Java Standard Library),覆盖数据处理、网络通信、并发控制、文件操作等核心领域。掌握这些类库是成为高效 Java 开发者的关键。本文将从 字符串操作、集合框架、IO/NIO、多线程、日期时间、数学运算、工具类 等维度,结合代码示例,深入解析 Java 常用类库的使用场景与最佳实践。
String
、StringBuilder
与 StringJoiner
特点:不可变字符串,频繁拼接时性能较差。
常用方法:
substring()
、indexOf()
、replace()
、split()
format()
:格式化字符串(类似 C 的 printf
)
示例代码:
String str = "Hello, Java!";
System.out.println(str.substring(0, 5)); // 输出 "Hello"
System.out.println(str.replace("Java", "World")); // 输出 "Hello, World!"
System.out.println(String.format("姓名:%s,年龄:%d", "Alice", 25));
// 输出:姓名:Alice,年龄:25
特点:可变字符串,适用于频繁拼接场景(如循环拼接)。
常用方法:
append()
、insert()
、delete()
、reverse()
示例代码:
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++) {
sb.append(i).append(",");
}
System.out.println(sb.deleteCharAt(sb.length() - 1)); // 输出 "1,2,3,4,5"
特点:简化字符串拼接,支持指定分隔符、前缀和后缀。
示例代码:
StringJoiner sj = new StringJoiner(", ", "[", "]");
sj.add("Apple").add("Banana").add("Orange");
System.out.println(sj); // 输出 "[Apple, Banana, Orange]"
List
、Set
、Map
与 Stream API
常用实现类:ArrayList
(动态数组)、LinkedList
(双向链表)
示例代码:
List list = new ArrayList<>();
list.add("A");
list.add("B");
list.set(0, "X"); // 修改索引 0 的元素
System.out.println(list); // 输出 "[X, B]"
常用实现类:HashSet
(哈希表)、TreeSet
(红黑树,有序)
示例代码:
Set set = new HashSet<>();
set.add(1);
set.add(2);
set.add(1); // 重复元素不会被添加
System.out.println(set); // 输出 "[1, 2]"
常用实现类:HashMap
(无序)、TreeMap
(按键排序)、LinkedHashMap
(插入顺序)
示例代码:
Map map = new HashMap<>();
map.put("Alice", 25);
map.put("Bob", 30);
System.out.println(map.get("Alice")); // 输出 25
map.forEach((k, v) -> System.out.println(k + ": " + v));
// 输出:
// Alice: 25
// Bob: 30
特点:函数式操作集合,支持过滤、映射、排序等操作。
示例代码:
List names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List filtered = names.stream()
.filter(name -> name.startsWith("B"))
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());
System.out.println(filtered); // 输出 "[BOB]"
字节流:InputStream
/ OutputStream
(适合二进制文件)。
字符流:Reader
/ Writer
(适合文本文件)。
示例代码:读取文件内容
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
核心类:Files
、Paths
、BufferedReader
(简化文件操作)。
优势:支持路径操作、原子性操作、内存映射文件。
示例代码:
Path path = Paths.get("data.txt");
try {
List lines = Files.readAllLines(path);
System.out.println(lines);
} catch (IOException e) {
e.printStackTrace();
}
Thread
、ExecutorService
与 CompletableFuture
创建线程:继承 Thread
类或实现 Runnable
接口。
示例代码:
Thread thread = new Thread(() -> {
for (int i = 0; i < 5; i++) {
System.out.println("子线程输出:" + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
优势:复用线程资源,提高并发性能。
示例代码:
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> System.out.println("任务1"));
executor.submit(() -> System.out.println("任务2"));
executor.shutdown();
特点:异步编程,支持链式调用和异常处理。
示例代码:
CompletableFuture future = CompletableFuture.supplyAsync(() -> {
return "Hello";
});
future.thenApply(result -> result + " World")
.thenAccept(System.out::println); // 输出 "Hello World"
java.util.Date
与 java.time
(Java 8+)问题:线程不安全、可变状态。
示例代码:
Date date = new Date();
System.out.println(date); // 输出当前时间(格式不友好)
核心类:LocalDate
、LocalTime
、LocalDateTime
、DateTimeFormatter
示例代码:
LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间:" + now); // 输出格式:2023-10-01T15:30:45.123
String formatted = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("格式化后:" + formatted); // 输出:2023-10-01 15:30:45
Math
、BigDecimal
与 Random
常用方法:abs()
、round()
、ceil()
、random()
示例代码:
System.out.println(Math.sqrt(16)); // 输出 4.0
System.out.println(Math.random()); // 输出 [0,1) 之间的随机数
用途:高精度计算(如金融场景)。
示例代码:
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b)); // 输出 0.3
生成随机数:支持整数、浮点数、布尔值等。
示例代码:
Random random = new Random();
System.out.println(random.nextInt(100)); // 输出 0~99 的随机整数
Arrays
、Collections
与 Objects
功能:数组排序、搜索、填充。
示例代码:
int[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 输出 [1, 1, 3, 4, 5]
功能:集合排序、反转、洗牌。
示例代码:
List list = Arrays.asList(3, 1, 4, 1, 5);
Collections.sort(list);
System.out.println(list); // 输出 [1, 1, 3, 4, 5]
常用方法:equals()
、hashCode()
、toString()
示例代码:
String a = null;
String b = "Hello";
System.out.println(Objects.equals(a, b)); // 输出 false
System.out.println(Objects.hash(a, b)); // 输出 -2147483648
String
、LocalDate
,避免线程安全问题。Objects.requireNonNull()
或 Optional
。CompletableFuture
、ForkJoinPool
。下一步建议:
掌握 Java 常用类库,是构建强大应用程序的第一步。愿你在代码的世界中不断探索,写出优雅、高效的 Java 程序!
您的支持是我持续创作的动力:
❤️ 点赞:如果这个项目对您有所启发,请多多点点赞支持一下
收藏:完整项目源码已开源,有需要收藏自取
关注:订阅我的专栏,不错过后续更多优质内容