Java 常用工具类

笔记/Java/Java基础/Java核心类库/Java 常用工具类

背景与动机#

Java 标准库里有很多“不是业务模型、但每天都会用到”的辅助类,比如判空、数组操作、集合排序、数学运算、时间戳获取等。

这类工具类本身不复杂,但因为出现频率很高,越早熟悉越能提升写代码的速度和稳定性。

核心原理拆解#

1. Objects:判空、比较、生成哈希值#

Objects 是现代 Java 里很常用的一组基础工具方法。

String name = null;
System.out.println(Objects.isNull(name));
System.out.println(Objects.nonNull(name));
System.out.println(Objects.equals("a", "a"));

它最常见的用途有:

  • Objects.equals(a, b):安全比较两个对象,避免空指针
  • Objects.requireNonNull(obj):快速做非空校验
  • Objects.hash(...):生成哈希值

2. Arrays:数组转字符串、排序、查找#

int[] nums = {3, 1, 2};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));

Arrays 最常见的用法有:

  • Arrays.sort(array):排序
  • Arrays.toString(array):把数组友好打印出来
  • Arrays.binarySearch(array, key):二分查找
  • Arrays.asList(...):把多个元素快速转成列表视图

3. Collections:操作集合#

List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
Collections.sort(list);
Collections.reverse(list);

常见方法有:

  • Collections.sort(list):排序
  • Collections.reverse(list):反转
  • Collections.shuffle(list):打乱
  • Collections.max(list) / min(list):最大值 / 最小值

4. Math:数学运算#

System.out.println(Math.max(3, 5));
System.out.println(Math.abs(-10));
System.out.println(Math.round(3.6));

Math 常用于:

  • 取绝对值:abs
  • 最大最小值:maxmin
  • 四舍五入:round
  • 向上 / 向下取整:ceilfloor
  • 幂运算和平方根:powsqrt

5. System:标准输入输出和时间#

System.out.println("hello");
System.out.println(System.currentTimeMillis());

最常见的有:

  • System.out.println(...):标准输出
  • System.currentTimeMillis():当前时间戳
  • System.exit(code):结束程序

6. 工具类一般为什么都是静态方法#

因为工具类通常不需要保存对象状态,只是提供一组通用能力,所以直接设计成“类名.方法名”的静态调用形式最自然。

这也是为什么很多工具类常常会配一个私有构造方法,避免外部无意义地 new 出实例。

最小可运行代码示例#

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
public class UtilityClassDemo {
public static void main(String[] args) {
int[] nums = {3, 1, 2};
Arrays.sort(nums);
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
Collections.sort(list);
System.out.println(Arrays.toString(nums));
System.out.println(list);
System.out.println(Objects.equals("java", "java"));
System.out.println(Math.max(10, 20));
System.out.println(System.currentTimeMillis());
}
}

常见陷阱与错误示例#

1. 直接打印数组对象#

int[] nums = {1, 2, 3};
System.out.println(nums);

这通常不会得到想看的数组内容。要打印内容,优先用 Arrays.toString(nums)

2. 误以为 Arrays.asList 返回的是普通可变 ArrayList#

它返回的是一个固定长度的列表视图,不能随意 addremove

3. 忘记用 Objects.equals 做安全比较#

如果对象可能为 null,直接调用 a.equals(b) 可能空指针,用 Objects.equals(a, b) 更稳。

面试高频问题#

1. 为什么工具类常用静态方法#

因为工具类通常不需要对象状态,只是提供通用能力,所以直接用静态方法调用最简单、最自然。

2. Objects.equals 和直接 equals 有什么区别#

Objects.equals(a, b) 会帮你处理 null,更安全;直接 a.equals(b)anull 时会抛空指针。

3. ArraysCollections 分别操作什么#

Arrays 主要操作数组,Collections 主要操作集合。

一句话总结#

ObjectsArraysCollectionsMathSystem 这些工具类不难,但使用频率极高,越早熟悉越能减少重复劳动和低级错误。

文章目录

文章目录