精通 Java 数组:高效数据处理综合指南
Java 提供数据结构 数组,存储固定大小同类型元素的顺序集合。数组用于存储数据集合,但更有用的视角是将其视为同类型变量的集合。
不声明 number0、number1... number99 等单独变量,而是声明一个数组变量如 numbers,用 numbers[0]、numbers[1]... numbers[99] 代表单个变量。
本教程介绍如何声明数组变量、创建数组、使用索引变量处理数组。
声明数组变量
程序中使用数组必须声明引用数组的变量,并指定变量可引用的数组类型。声明数组变量语法:
语法
dataType[] arrayRefVar; // 首选方式 或 dataType arrayRefVar[]; // 可行但非首选
注意 − dataType[] arrayRefVar 为首选风格。dataType arrayRefVar[] 源自 C/C++,Java 采纳以兼容 C/C++ 程序员。
示例
double[] myList; // 首选方式 或 double myList[]; // 可行但非首选
创建数组
用 new 操作符创建数组,语法:
语法
arrayRefVar = new dataType[arraySize];
此语句做两件事:
- 用 new dataType[arraySize] 创建数组。
- 将新创建数组的引用赋给变量 arrayRefVar。
声明数组变量、创建数组、赋引用可合为一条语句:
dataType[] arrayRefVar = new dataType[arraySize];
也可这样创建数组:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
数组元素通过 索引 访问。索引从 0 开始,即 0 到 arrayRefVar.length-1。
示例
以下语句声明数组变量 myList,创建 10 个 double 元素数组并赋引用给 myList:
double[] myList = new double[10];
下图展示数组 myList。myList 存十个 double 值,索引 0 到 9。
处理数组
处理数组元素常用 for 循环或 foreach 循环,因所有元素同类型且数组大小已知。
示例
完整示例展示创建、初始化、处理数组:
Live Demopublic class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 求和所有元素
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
输出:
输出
1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5
foreach 循环
JDK 1.5 引入新 for 循环称 foreach 或增强 for 循环,可不使用索引变量顺序遍历完整数组。
示例
以下代码显示数组 myList 所有元素:
Live Demopublic class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (double element: myList) {
System.out.println(element);
}
}
}
输出:
输出
1.9 2.9 3.4 3.5
向方法传递数组
正如可向方法传基本类型值,也可传数组。例如以下方法显示 int 数组元素:
示例
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
调用时传数组。例:以下语句调用 printArray 显示 3, 1, 2, 6, 4, 2:
示例
printArray(new int[]{3, 1, 2, 6, 4, 2});
从方法返回数组
方法也可返回数组。例如以下方法返回另一数组的逆序数组:
示例
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
The Arrays 类
java.util.Arrays 类包含各种静态方法用于排序、搜索数组、比较数组、填充数组元素。这些方法对所有基本类型重载。
| 序号 | 方法 & 描述 |
|---|---|
| 1 | public static int binarySearch(Object[] a, Object key) - 用二分搜索算法搜索指定 Object 数组(Byte、Int、double 等)中的指定值。调用前数组必须排序。返回搜索键索引(若包含),否则返回 (–(插入点+1))。 |
| 2 | public static boolean equals(long[] a, long[] a2) - 两个指定 long 数组相等返回 true。数组相等指元素数相同且对应元素全等。其他基本类型(Byte、short、Int 等)同理。 |
| 3 | public static void fill(int[] a, int val) - 将指定 int 值赋给指定 int 数组每个元素。其他基本类型同理。 |
| 4 | public static void sort(Object[] a) - 按元素自然顺序将指定对象数组排序为升序。其他基本类型同理。 |
java
- 掌握 C# 数组:声明、初始化与核心操作完全指南
- C++ 数组完全指南:声明、初始化、多维数组与指针技巧
- C++ 动态数组分配实战指南:new/delete、初始化、扩容与内存管理
- 精通 Java 运算符:类型、语法与实战示例
- Java 数组复制技术:全面指南
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java Try-With-Resources:自动资源管理详解
- Java 注解详解:类型、放置位置与实战示例
- Java 数组教程:声明、创建、初始化与示例代码
- Java 对象数组创建:分步指南
- Java 冒泡排序详解:核心原理、完整代码与步骤演示
- Java 选择排序详解:核心原理、完整代码与步骤演示