Java 常用类库详解:从基础到实战

目录

字符串处理: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 常用类库的使用场景与最佳实践。

字符串处理:StringStringBuilder 与 StringJoiner

1. String 类

  • 特点:不可变字符串,频繁拼接时性能较差。

  • 常用方法

    • 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

2. StringBuilder 类

  • 特点:可变字符串,适用于频繁拼接场景(如循环拼接)。

  • 常用方法

    • 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"

3. StringJoiner 类(Java 8+)

  • 特点:简化字符串拼接,支持指定分隔符、前缀和后缀。

示例代码:

StringJoiner sj = new StringJoiner(", ", "[", "]");
sj.add("Apple").add("Banana").add("Orange");
System.out.println(sj); // 输出 "[Apple, Banana, Orange]"

集合框架:ListSetMap 与 Stream API 

1. List 接口(有序、可重复)

  • 常用实现类ArrayList(动态数组)、LinkedList(双向链表)

示例代码:

List list = new ArrayList<>();
list.add("A");
list.add("B");
list.set(0, "X"); // 修改索引 0 的元素
System.out.println(list); // 输出 "[X, B]"

2. Set 接口(无序、不可重复)

  • 常用实现类HashSet(哈希表)、TreeSet(红黑树,有序)

示例代码:

Set set = new HashSet<>();
set.add(1);
set.add(2);
set.add(1); // 重复元素不会被添加
System.out.println(set); // 输出 "[1, 2]"

3. Map 接口(键值对)

  • 常用实现类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

4. Stream API(Java 8+)

  • 特点:函数式操作集合,支持过滤、映射、排序等操作。

示例代码:

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]"

输入输出(IO/NIO)

1. 传统 IO(字节流与字符流)

  • 字节流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();
}

2. NIO(New IO,Java 7+)

  • 核心类FilesPathsBufferedReader(简化文件操作)。

  • 优势:支持路径操作、原子性操作、内存映射文件。

示例代码:

Path path = Paths.get("data.txt");
try {
    List lines = Files.readAllLines(path);
    System.out.println(lines);
} catch (IOException e) {
    e.printStackTrace();
}

多线程与并发:ThreadExecutorService 与 CompletableFuture

1. Thread 与 Runnable

  • 创建线程:继承 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();

2. 线程池(ExecutorService)

  • 优势:复用线程资源,提高并发性能。

示例代码:

ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> System.out.println("任务1"));
executor.submit(() -> System.out.println("任务2"));
executor.shutdown();

3. CompletableFuture(Java 8+)

  • 特点:异步编程,支持链式调用和异常处理。

示例代码:

CompletableFuture future = CompletableFuture.supplyAsync(() -> {
    return "Hello";
});
future.thenApply(result -> result + " World")
       .thenAccept(System.out::println); // 输出 "Hello World"

日期与时间处理:java.util.Date 与 java.time(Java 8+)

1. 传统 Date 类(已过时)

  • 问题:线程不安全、可变状态。

示例代码:

Date date = new Date();
System.out.println(date); // 输出当前时间(格式不友好)

2. Java 8 时间 API(推荐)

  • 核心类LocalDateLocalTimeLocalDateTimeDateTimeFormatter

示例代码:

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

数学运算:MathBigDecimal 与 Random

1. Math 类

  • 常用方法abs()round()ceil()random()

示例代码:

System.out.println(Math.sqrt(16)); // 输出 4.0
System.out.println(Math.random()); // 输出 [0,1) 之间的随机数

2. BigDecimal 类

  • 用途:高精度计算(如金融场景)。

示例代码:

BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b)); // 输出 0.3

3. Random 类

  • 生成随机数:支持整数、浮点数、布尔值等。

示例代码:

Random random = new Random();
System.out.println(random.nextInt(100)); // 输出 0~99 的随机整数

工具类:ArraysCollections 与 Objects

1. Arrays 类

  • 功能:数组排序、搜索、填充。

示例代码:

int[] arr = {3, 1, 4, 1, 5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 输出 [1, 1, 3, 4, 5]

2. Collections 类

  • 功能:集合排序、反转、洗牌。

示例代码:

List list = Arrays.asList(3, 1, 4, 1, 5);
Collections.sort(list);
System.out.println(list); // 输出 [1, 1, 3, 4, 5]

3. Objects 类

  • 常用方法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

 结语:类库学习的最佳实践

  1. 优先使用不可变类:如 StringLocalDate,避免线程安全问题。
  2. 善用 Stream API:简化集合操作,提高代码可读性。
  3. 避免空指针异常:使用 Objects.requireNonNull() 或 Optional
  4. 掌握 NIO 替代传统 IO:提升文件处理性能。
  5. 深入学习并发工具:如 CompletableFutureForkJoinPool

下一步建议

  • 学习第三方类库(如 Guava、Apache Commons),扩展功能边界。
  • 结合实际项目练习(如开发一个文件管理器、多线程爬虫)。
  • 探索 JVM 底层机制(如内存模型、GC),提升性能调优能力。

掌握 Java 常用类库,是构建强大应用程序的第一步。愿你在代码的世界中不断探索,写出优雅、高效的 Java 程序!

您的支持是我持续创作的动力:

❤️ 点赞:如果这个项目对您有所启发,请多多点点赞支持一下
收藏:完整项目源码已开源,有需要收藏自取
关注:订阅我的专栏,不错过后续更多优质内容

你可能感兴趣的:(爪哇岛代码纪事,java,开发语言,面试,后端)