java中数组元素交换最直接的方式是用临时变量,先存第一个值,再赋第二个值,最后用临时变量赋值;也可用异或法(仅限整型且i≠j);推荐封装为泛型方法并校验索引边界。

Java 中数组两个元素交换位置,最直接的方式是用临时变量完成赋值,不需要额外库或复杂逻辑。
用临时变量交换(最常用)
这是最基础、最安全、兼容所有数组类型(包括基本类型和对象)的方法。核心就是借助一个中间变量暂存数据,避免覆盖。
- 先将第一个元素的值存入临时变量
- 把第二个元素的值赋给第一个位置
- 再把临时变量的值赋给第二个位置
示例代码:
int[] arr = {1, 2, 3, 4, 5};
int i = 0, j = 3; // 交换索引 0 和 3 处的元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
// 结果:{4, 2, 3, 1, 5}
适用于整数数组的异或交换(无临时变量)
仅限 int、short、byte 等整型数组,且要求两个索引不能相同(否则会清零)。利用异或运算的性质:a ^ a = 0,a ^ 0 = a,可实现不借助临时变量的交换。
- 适合写算法题时节省空间,但可读性差,实际项目中不推荐
- 如果
i == j,结果为 0,需额外判断
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
if (i != j) {
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
}
封装成通用方法提升复用性
把交换逻辑抽成静态方法,支持任意一维数组(含泛型对象数组),让调用更简洁、不易出错。
- 对基本类型数组需分别重载(如
swap(int[], int, int)) - 对引用类型可用泛型方法,但注意不能用于基本类型(如
int[]不是Integer[])
泛型示例:
public static <t> void swap(T[] arr, int i, int j) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}</t>
注意边界和异常处理
交换前建议校验索引有效性,避免 ArrayIndexOutOfBoundsException。
- 检查
i和j是否在[0, arr.length)范围内 - 可选择抛出明确异常,或静默忽略(根据业务场景决定)
简单校验写法:
if (i = arr.length || j = arr.length) {
throw new IllegalArgumentException("Index out of bounds");
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










