第五课:数据结构
(一)数组
1. 数组的声明和创建
在 Java 中,数组用于存储固定大小的同类型元素。
- 声明数组变量的语法如下:
dataType[] arrayRefVar; // 推荐方式
dataType arrayRefVar[]; // 效果相同,但不推荐
实例:
double[] myList; // 推荐方式
double myList[]; // 效果相同
- 创建数组语法格式为:
arrayRefVar = new dataType[arraySize];
- 数组的创建和声明可以合并为一条语句:
dataType[] arrayRefVar = new dataType[arraySize];
- 通过初始化器创建数组:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
// 或者
arrayRefVar = new dataType[]{value0, value1, ..., valuek};
例如:
array = new int[]{3, 1, 2, 6, 4, 2}
实例:
int size = 10;
double[] myList = new double[size];
myList[0] = 5.6;
myList[1] = 4.5;
// ...初始化更多元素
2. 访问数组元素
数组的元素通过索引访问,索引从 0 开始,直到 arrayRefVar.length - 1。
实例:
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i]);
}
3. 使用 For-Each 循环
Java 1.5 引入了增强型 for 循环(For-Each 循环),它可以简化数组的遍历。
语法:
for (type element : array) {
// 使用 element
}
实例:
for (double element : myList) {
System.out.println(element);
}
4. 数组作为方法参数
数组可以作为方法的参数传递。
实例:
public class Test1 {
public static void main(String[] args) {
printArray(new int[]{3, 1, 2, 6, 4, 2});
}
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
注意:
java中方法不能嵌套定义, 因此
printArray方法不能在main方法中定义,它应该作为Test1类的一个独立成员方法。下面就是一个典型的错误案例
public class Test1 { public static void main(String[] args) { public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }; printArray(new int[]{3, 1, 2, 6, 4, 2}); } }
5. 数组作为函数返回值
数组也可以作为函数的返回值。
实例:
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;
}
注意在声明方法时,由于返回的是一个数组,因此声明的数据类型是 int[ ] 而不是 void
6. 多维数组
多维数组是数组的数组。例如,二维数组就是一个数组,其中的每个元素也是数组。
实例:
String[][] str = new String[3][4];
动态初始化:
int[][] a = new int[2][3]; // 2行3列
String[][] s = new String[2][];
s[0] = new String[2];
s[1] = new String[3];
7. Arrays 类
java.util.Arrays 类提供了用于数组操作的方法。
fill():为数组赋值sort():对数组进行排序(升序)equals():比较两个数组是否相等binarySearch():在排序数组中查找元素
实例:
// 比较数组
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
boolean isEqual = Arrays.equals(a, b); // 返回 true
// 填充数组
Arrays.fill(a, 5); // 所有元素赋值为 5