在 Java 中,数组是固定长度的数据结构,虽然长度不可变,但可以通过索引或遍历机制修改元素值,也可使用工具类方法(如排序)调整元素顺序。以下是具体操作方法及示例:
1. 修改特定位置的元素通过索引运算符直接访问并修改指定位置的元素,索引从 0 开始。
int[] numbers = new int[]{1, 2, 3, 4, 5};numbers[2] = 10; // 修改后数组为 [1, 2, 10, 4, 5]- 注意:索引必须有效(0 ≤ 索引 < 数组长度),否则会抛出 ArrayIndexOutOfBoundsException。
2. 修改所有元素的值通过遍历机制(如 for 循环或 for-each 循环)逐个修改元素。
- 问题:直接使用 for-each 循环无法修改原数组元素(循环变量是副本)。
错误示例:int[] numbers = {1, 2, 3, 4, 5};for (int number : numbers) { number++; // 仅修改副本,原数组不变}System.out.println(Arrays.toString(numbers)); // 输出仍为 [1, 2, 3, 4, 5]
- 正确方法:
使用普通 for 循环:int[] numbers = {1, 2, 3, 4, 5};for (int i = 0; i < numbers.length; i++) { numbers[i]++; // 每个元素加 1}System.out.println(Arrays.toString(numbers)); // 输出 [2, 3, 4, 5, 6]
使用 Arrays.setAll()(Java 8+):int[] numbers = {1, 2, 3, 4, 5};Arrays.setAll(numbers, i -> numbers[i] + 1); // 每个元素加 1System.out.println(Arrays.toString(numbers)); // 输出 [2, 3, 4, 5, 6]
3. 对数组元素排序使用 Arrays.sort() 方法对数组进行升序排序(元素需可比较)。
import java.util.Arrays;int[] numbers = {5, 2, 1, 4, 3};Arrays.sort(numbers); // 排序后数组为 [1, 2, 3, 4, 5]System.out.println(Arrays.toString(numbers));- 扩展:
降序排序:需先排序再反转(或使用流操作)。int[] numbers = {5, 2, 1, 4, 3};Arrays.sort(numbers);// 手动反转数组for (int i = 0; i < numbers.length / 2; i++) { int temp = numbers[i]; numbers[i] = numbers[numbers.length - 1 - i]; numbers[numbers.length - 1 - i] = temp;}System.out.println(Arrays.toString(numbers)); // 输出 [5, 4, 3, 2, 1]
自定义排序:对对象数组可实现 Comparator 接口。
4. 其他常见操作- 填充数组:使用 Arrays.fill()。int[] numbers = new int[5];Arrays.fill(numbers, 10); // 所有元素填充为 10System.out.println(Arrays.toString(numbers)); // 输出 [10, 10, 10, 10, 10]
- 复制数组:使用 Arrays.copyOf() 或 System.arraycopy()。int[] original = {1, 2, 3};int[] copied = Arrays.copyOf(original, original.length);
注意事项- 索引有效性:修改元素时确保索引在 0 到 数组长度-1 范围内。
- 元素类型:Arrays.sort() 要求元素可比较(如基本类型或实现 Comparable 的对象)。
- 不可变数组:Java 数组长度固定,若需动态扩容,可转用 ArrayList。
完整示例import java.util.Arrays;public class ArrayModification { public static void main(String[] args) { // 1. 修改特定元素 int[] numbers = {1, 2, 3, 4, 5}; numbers[2] = 10; System.out.println("修改特定元素后: " + Arrays.toString(numbers)); // 2. 修改所有元素(使用普通 for 循环) for (int i = 0; i < numbers.length; i++) { numbers[i]++; } System.out.println("所有元素加 1 后: " + Arrays.toString(numbers)); // 3. 排序数组 int[] unsorted = {5, 2, 1, 4, 3}; Arrays.sort(unsorted); System.out.println("排序后: " + Arrays.toString(unsorted)); }}输出:
修改特定元素后: [1, 2, 10, 4, 5]所有元素加 1 后: [2, 3, 11, 5, 6]排序后: [1, 2, 3, 4, 5]通过以上方法,可以灵活地修改 Java 数组的元素或调整其顺序。