arrays.sort()对基本类型数组升序排序直接调用,底层用双轴快排;支持int[]、long[]、double[]、float[]、short[]、byte[]、char[];不接受comparator,降序需转包装类。

Java 中 Arrays.sort() 对基本类型数组升序排序,直接调用即可,无需额外参数,底层使用双轴快排(Dual-Pivot Quicksort),高效且稳定。
支持的基本类型数组
以下类型数组可直接用 Arrays.sort(arr) 升序排列:
-
int[]、long[]、double[]、float[] -
short[]、byte[]、char[]
例如:int[] nums = {5, 2, 8, 1};<br>Arrays.sort(nums); // 结果:{1, 2, 5, 8}
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
注意:不能用于基本类型包装类数组的“自动升序”
虽然 Integer[]、Double[] 等是引用类型,但 Arrays.sort() 对它们默认按自然顺序升序——这容易混淆。关键区别在于:
-
int[]是基本类型数组 → 调用sort(int[])重载方法 -
Integer[]是对象数组 → 调用sort(Object[]),依赖Comparable接口
二者实现不同,但结果都是升序。误写成 Arrays.sort(new int[]{}) 没问题;但若把基本类型数组误传给泛型方法(如自定义排序函数),会编译失败。
常见错误与规避
- 对
null数组调用会抛NullPointerException,建议先判空 - 对空数组(
new int[0])或单元素数组调用安全,无需特殊处理 - 不支持指定比较器(Comparator)——基本类型无
Comparator重载,如需降序,得转为包装类数组再排
例如降序需求:Integer[] boxed = Arrays.stream(primitiveArr).boxed().toArray(Integer[]::new);<br>Arrays.sort(boxed, Collections.reverseOrder());
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










