Java 数组(全程详细)

文章目录

  • 一、Java 数组
  • 二、数组的声明
  • 三、数组的初始化
    • 3.1 静态初始化
    • 3.2 动态初始化
  • 四、数组的特点
    • 4.1 固定大小
    • 4.2 存储相同类型的数据
    • 4.3 通过索引访问元素
  • 五、数组的操作
    • 5.1 遍历数组
    • 5.2 复制数组
    • 5.3 排序数组
  • 六、多维数组
    • 6.1 声明和初始化
    • 6.2 访问元素
  • 七、数组工具类

一、Java 数组

在 Java 中,数组是一种用于存储固定大小的同类型元素的容器。数组中的每一个元素都可以通过一个索引进行访问,索引是从 0 开始的。数组在内存中是连续存储的,这使得访问和修改数组元素非常快速。

⚠️注意:数组提供了一种方便的方式来存储和操作相同类型的数据。在使用数组时,需要注意数组的大小、类型和索引的范围,以避免出现错误。


二、数组的声明

首先必须声明数组变量,才能在 Java 中使用数组。具体语法如下:

int[] myArr;         // 首选方式int myArr[];         //  效果相同,但不推荐

建议使用 int[] myArr 的声明风格声明数组变量。 int myArr[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。


三、数组的初始化

3.1 静态初始化

静态初始化指的是在声明数组的同时为数组元素赋值。

// 静态初始化创建数组
int[] numbers = {1, 2, 3, 4, 5};

3.2 动态初始化

动态初始化指的是先指定数组的大小,然后再为数组元素赋值。

public class Main {
    public static void main(String[] args) {
        // 动态初始化创建数组
        int[] numbers = new int[3];
        // 赋值
        numbers[0] = 1;
        numbers[1] = 2;
        numbers[2] = 3;
    }
}

四、数组的特点

4.1 固定大小

一旦数组被创建,其大小就不能改变。这意味着在初始化数组时,需要确定数组的大小,以避免出现浪费空间的情况。


4.2 存储相同类型的数据

数组只能存储相同类型的数据。例如,一个整数数组只能存储整数,不能存储其他类型的数据。


4.3 通过索引访问元素

数组中的元素可以通过索引来访问。索引从 0 开始,依次递增,注意避免索引越界异常。


五、数组的操作

5.1 遍历数组

可以使用 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

5.2 复制数组

可以使用 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

5.3 排序数组

可以使用 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

六、多维数组

多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。

6.1 声明和初始化

// 二维数组的声明
数据类型[][] 数组名;

// 二维数组初始化
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 

6.2 访问元素

访问多维数组的元素需要使用多个索引。例如,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("数组元素一致"); // 数组元素一致
        }
    }
}

你可能感兴趣的:(Java,java,开发语言,学习,后端)