Skip to main content

第五课:数据结构

(一)数组

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