在 Java 中,数组是一种用于存储固定大小的同类型元素的容器。数组中的每一个元素都可以通过一个索引进行访问,索引是从 0 开始的。数组在内存中是连续存储的,这使得访问和修改数组元素非常快速。
⚠️注意:数组提供了一种方便的方式来存储和操作相同类型的数据。在使用数组时,需要注意数组的大小、类型和索引的范围,以避免出现错误。
首先必须声明数组变量,才能在 Java 中使用数组。具体语法如下:
int[] myArr; // 首选方式
或
int myArr[]; // 效果相同,但不推荐
建议使用 int[] myArr 的声明风格声明数组变量。 int myArr[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。
静态初始化指的是在声明数组的同时为数组元素赋值。
// 静态初始化创建数组
int[] numbers = {1, 2, 3, 4, 5};
动态初始化指的是先指定数组的大小,然后再为数组元素赋值。
public class Main {
public static void main(String[] args) {
// 动态初始化创建数组
int[] numbers = new int[3];
// 赋值
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
}
}
一旦数组被创建,其大小就不能改变。这意味着在初始化数组时,需要确定数组的大小,以避免出现浪费空间的情况。
数组只能存储相同类型的数据。例如,一个整数数组只能存储整数,不能存储其他类型的数据。
数组中的元素可以通过索引来访问。索引从 0 开始,依次递增,注意避免索引越界异常。
可以使用 for 循环遍历数组中的元素。
public class Main {
public static void main(String[] args) {
// 创建数组
int[] numbers = {1, 2, 3, 4, 5};
// 遍历数组
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}
运行结果:
1
2
3
4
5
可以使用 Arrays.copyOf() 方法复制数组。
public class Main {
public static void main(String[] args) {
// 源数组
int[] source = {1, 2, 3, 4, 5};
// 目标数组
int[] destination = new int[source.length];
System.arraycopy(source, 0, destination, 0, source.length);
// 遍历数组
for (int i = 0; i < destination.length; i++) {
System.out.println(destination[i]);
}
}
}
运行结果:
1
2
3
4
5
可以使用 Arrays.sort() 方法对数组进行排序。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 创建数组
int[] numbers = {5, 3, 1, 4, 2};
// 排序数组
Arrays.sort(numbers);
// 遍历数组
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}
运行结果:
1
2
3
4
5
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
// 二维数组的声明
数据类型[][] 数组名;
// 二维数组初始化
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
访问多维数组的元素需要使用多个索引。例如,matrix[1][2] 表示二维数组中第二行第三列的元素。
public class Main {
public static void main(String[] args) {
// 二维数组初始化
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 二维数组访问
System.out.println(matrix[1][2]);
}
}
运行结果:
6
在 Java 中,Arrays 类在 java.util.Arrays 中,是用于专门操作数组的工具类,它提供了很多种静态方法来操作数组,包括排序、搜索、复制、填充数组元素等。下面列出了常用的方法:
toString(T[] a):将数组转换为字符串形式
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 创建数组
int[] arr = {5, 4, 3, 2, 1};
// 打印数组
System.out.println(Arrays.toString(arr)); // [5, 4, 3, 2, 1]
}
}
sort(T[] a):用于对数组进行排序
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 创建数组
int[] arr = {5, 4, 3, 2, 1};
// 升序排序
Arrays.sort(arr);
// 打印数组
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5]
}
}
binarySearch(T[] a, T key):在一个升序的数组中查找指定的元素,找到返回元素下标,找不到返回 -1
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 创建数组,数组必须是升序的
int[] arr = {1, 2, 3, 4, 5};
// 查找元素,返回其下标
int index = Arrays.binarySearch(arr, 1);
// 打印数组
System.out.println("下标:" + index); // 下标:0
}
}
fill(T[] a, T val):将数组中的所有元素设置为指定的值
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 创建数组
int[] arr = new int[5];
// 填充元素
Arrays.fill(arr, -1);
// 打印数组
System.out.println(Arrays.toString(arr)); // [-1, -1, -1, -1, -1]
}
}
copyOf(T[] original, int newLength):用于复制数组,并返回一个新的数组,新数组的长度由 newLength 参数决定
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 创建数组
int[] arr = {1, 2, 3, 4, 5};
// 复制数组
int[] newArr = Arrays.copyOf(arr, arr.length);
// 打印数组
System.out.println("新数组:" + Arrays.toString(newArr)); // 新数组:[1, 2, 3, 4, 5]
}
}
equals(T[] a1, T[] a2):用于比较两个数组是否相等,即它们是否包含相同的元素
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 数组一
int[] arr1 = {1, 2, 3, 4, 5};
// 数组二
int[] arr2 = {1, 2, 3, 4, 5};
// 判断两个数组是否一致
if (Arrays.equals(arr1, arr2)) {
System.out.println("数组元素一致"); // 数组元素一致
}
}
}