第六章:数组
6.1 数组概述
数组是一种数据结构,用于存储同一类型的多个元素。数组中的每个元素都有一个固定的位置和索引,索引用于访问数组中的元素。Java 中的数组是对象,数组的大小在创建时确定,且不能改变。
6.2 数组的声明和创建
6.2.1 声明数组
在 Java 中,声明数组的语法如下:
数据类型[] 数组名;
例如:
int[] numbers;
6.2.2 创建数组
数组声明后,可以使用 new
关键字创建数组,并指定数组的大小:
数组名 = new 数据类型[数组大小];
例如:
numbers = new int[5];
声明和创建数组可以合并为一句:
int[] numbers = new int[5];
6.2.3 初始化数组
在创建数组的同时,可以对其进行初始化:
int[] numbers = {1, 2, 3, 4, 5};
或者:
int[] numbers = new int[]{1, 2, 3, 4, 5};
6.3 访问数组元素
通过数组的索引可以访问数组中的元素,索引从 0
开始。例如:
int firstNumber = numbers[0]; int secondNumber = numbers[1];
可以使用索引修改数组中的元素:
numbers[0] = 10;
6.4 数组的遍历
6.4.1 使用 for 循环遍历数组
使用 for
循环遍历数组的语法如下:
for (int i = 0; i < 数组名.length; i++) { // 使用数组元素 }
例如:
for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); }
6.4.2 使用增强型 for 循环遍历数组
增强型 for
循环(也称为 for-each
循环)用于简化数组的遍历,语法如下:
for (数据类型 变量名 : 数组名) { // 使用数组元素 }
例如:
for (int number : numbers) { System.out.println(number); }
6.5 多维数组
6.5.1 声明和创建二维数组
二维数组可以看作是数组的数组,声明和创建二维数组的语法如下:
数据类型[][] 数组名 = new 数据类型[行数][列数];
例如:
int[][] matrix = new int[3][4];
6.5.2 初始化二维数组
在创建二维数组的同时,可以对其进行初始化:
int[][] matrix = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
6.5.3 访问二维数组元素
通过行和列的索引可以访问二维数组中的元素:
int firstElement = matrix[0][0]; int secondElement = matrix[1][2];
可以使用索引修改二维数组中的元素:
matrix[0][0] = 10;
6.5.4 遍历二维数组
可以使用嵌套的 for
循环遍历二维数组:
for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); }
6.6 数组的常用操作
6.6.1 数组长度
可以使用 length
属性获取数组的长度:
int length = numbers.length;
6.6.2 数组的复制
可以使用 System.arraycopy
方法复制数组:
int[] copy = new int[numbers.length]; System.arraycopy(numbers, 0, copy, 0, numbers.length);
6.6.3 数组排序
可以使用 Arrays.sort
方法对数组进行排序:
import java.util.Arrays; Arrays.sort(numbers);
6.6.4 数组的搜索
可以使用 Arrays.binarySearch
方法对排序后的数组进行二分查找:
int index = Arrays.binarySearch(numbers, 3);
6.7 可变参数
6.7.1 定义可变参数方法
Java 提供了可变参数(varargs)机制,允许方法接受不定数量的参数。定义可变参数的方法如下:
public static void printNumbers(int... numbers) { for (int number : numbers) { System.out.println(number); } }
6.7.2 调用可变参数方法
可以传递任意数量的参数给可变参数方法:
printNumbers(1, 2, 3); printNumbers(4, 5, 6, 7, 8);
6.8 数组与字符串
6.8.1 字符串转数组
可以使用 split
方法将字符串转换为数组:
String str = "1,2,3,4,5"; String[] strArray = str.split(",");
6.8.2 数组转字符串
可以使用 Arrays.toString
方法将数组转换为字符串:
String arrayString = Arrays.toString(numbers);
6.9 常见问题与注意事项
-
数组索引越界异常:访问不存在的数组索引会抛出
ArrayIndexOutOfBoundsException
。 -
数组的类型固定:数组一旦创建,其类型和大小是固定的,不能改变。
-
多维数组的行可以有不同的列数:Java 的多维数组实际上是数组的数组,每一行的列数可以不同。