真正有意义的 Java 数组方法
Source: Dev.to
数组一开始真的让人感到困惑。概念本身——存储多个值——没问题。但各种实用方法分散在不同的类里?这花了点时间才弄明白。
你需要了解的两个类
大多数数组工具方法都在 java.util.Arrays 中——需要导入它。
如果要进行大小调整和动态操作,ArrayList 是你的好帮手(但那是另一个话题)。
import java.util.Arrays;
数组工具方法
Arrays.sort()
按升序对数组进行排序。适用于数字和字符串。
int[] nums = {5, 2, 8, 1, 9};
Arrays.sort(nums);
// nums 现在是 {1, 2, 5, 8, 9}
Arrays.toString()
调试时很有用。打印数组内容而不是内存地址。
int[] nums = {1, 2, 3};
System.out.println(nums); // [I@6d06d69c ← 没用
System.out.println(Arrays.toString(nums)); // [1, 2, 3] ← 有用
Arrays.fill()
用单一值填充所有元素。用于初始化很方便。
int[] grid = new int[5];
Arrays.fill(grid, 0);
// {0, 0, 0, 0, 0}
Arrays.copyOf()
将数组复制到一个新数组。复制时还能改变大小。
int[] original = {1, 2, 3, 4, 5};
int[] copy = Arrays.copyOf(original, 3);
// copy = {1, 2, 3}
Arrays.copyOfRange()
复制数组的特定片段。
int[] nums = {10, 20, 30, 40, 50};
int[] slice = Arrays.copyOfRange(nums, 1, 4);
// slice = {20, 30, 40}
Arrays.equals()
检查两个数组的值是否相同且顺序一致。
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b); // false(不同对象)
System.out.println(Arrays.equals(a, b)); // true ✅
和字符串的教训一样——永远不要用 == 来比较数组。
Arrays.binarySearch()
在已排序的数组中搜索某个值并返回其索引。先对数组排序,否则结果不可预测。
int[] nums = {1, 3, 5, 7, 9};
int index = Arrays.binarySearch(nums, 5);
// index = 2
array.length
这不是方法,而是属性。到处都可以使用。
int[] nums = {4, 8, 15, 16, 23};
System.out.println(nums.length); // 5
没有括号——只写 .length,而不是 .length()。
快速参考
| 方法 | 功能说明 |
|---|---|
Arrays.sort() | 升序排序 |
Arrays.toString() | 可读格式打印 |
Arrays.fill() | 设置所有值 |
Arrays.copyOf() | 复制(可调整大小) |
Arrays.copyOfRange() | 复制切片 |
Arrays.equals() | 比较两个数组 |
Arrays.binarySearch() | 查找值的索引 |
.length | 获取数组大小 |
需要记住的一点
Java 中的数组是 固定大小 的——创建后不能添加或删除元素。如果需要可变大小的列表,请使用 ArrayList。
// 固定大小——不能增长
int[] arr = new int[5];
// 灵活——可以增删
ArrayList list = new ArrayList<>();
这又是另一个完整的主题了 😄
有问题或想让我接下来讲 ArrayList 吗?在下方留言吧!
祝编码愉快 🙌