Java 中,数组(Arrays)是存储固定大小的相同类型元素的集合。Java 中的数组是对象,允许存储基本数据类型或对象类型的元素。数组一旦创建,大小不可更改。Java 数组是基础数据结构之一,支持基本操作如创建、访问、排序和搜索。借助 Arrays 类,可以轻松对数组进行操作,提升代码效率。在开发中,合理使用数组能够让程序更简洁和高效。本文主要介绍Java 数组。

1、Java 数组

数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。

要声明数组,要使用方括号定义变量类型:

String[] langs;

下面声明了一个包含字符串数组的变量。要向其中插入值,我们可以使用数组字面量,就是将值放在以逗号分隔的花括号内,例如:

String[] langs = {"c", "java", "python", "cjavapy"};

要创建整数数组,可以编写:

int[] myNum = {10, 20, 30, 40};

2、访问数组中元素

可以通过数组索引来访问数组元素,索引从 0 开始。

该语句访问langs中第一个元素的值:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
System.out.println(langs[0]);
// 输出 c

注意:数组索引以0开头:[0]是第一个元素。 [1]是第二个元素,依此类推。

3、修改数组中元素

要更改指定元素的值,可以使用数组索引来修改,例如:

例如

langs[0] = "javascript";

例如

String[] langs = {"c", "java", "python", "cjavapy"};
langs[0] = "javascript";
System.out.println(langs[0]);

4、数组长度

在Java中,数组是非原始数据类型,也就是它是具有不同方法的对象,可用于获取有关此对象的信息。每个数组都有一个 length 属性,它返回数组的大小。例如,要找出一个数组有多少个元素,可以使用length属性:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
System.out.println(langs.length);
// 输出 4

5、循环遍历数组

可以使用for循环遍历数组元素,并通过使用length属性来指定循环应运行的次数。

下面示例输出langs数组中的所有元素:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
for (int i = 0; i < langs.length; i++) {
  System.out.println(langs[i]);
}

6、for-each遍历数组

专用于循环遍历数组中的元素:

语法

for (type variable : arrayname) {
  ...
}

以下示例使用for-each循环输出langs数组中的所有元素:

例如

String[] langs = {"c", "java", "python", "cjavapy"};
for (String i : langs) {
  System.out.println(i);
}

for循环和for-each循环,for-each方法更简单方便,而且不需要计数(使用length属性),并且更具可读性。

7、多维数组

多维数组是包含一个或多个数组的数组。

如果需要创建二维数组,需要将每个数组添加到其各自的大括号内:

例如

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };

myNumbers现在是一个以两个数组为元素的数组。

要访问myNumbers数组的元素,请指定两个索引:一个用于数组,一个用于该数组内的元素。本示例访问myNumbers的第二个数组(索引下标为1)中的第三个元素(索引下标为2):

例如

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
int x = myNumbers[1][2];
System.out.println(x); // 输出 7

也可以在通过嵌套for循环来获取二维数组的元素(需要指向两个索引下标):

例如:

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
for (int i = 0; i < myNumbers.length; ++i) {
  for(int j = 0; j < myNumbers[i].length; ++j) {
    System.out.println(myNumbers[i][j]);
  }  
}

8、Arrays 类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下常用功能:

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort 方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

具体说明请查看下表:

序号

方法和说明

1

public static int binarySearch(Object[] a, Object key)

用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。

数组在调用前必须排序好的。如果查找值包含在数组中,

则返回搜索键的索引;

否则返回 (-(插入点) - 1)。

2

public static boolean equals(long[] a, long[] a2)

如果两个指定的 long 型数组彼此相等

,则返回 true。如果两个数组包含相同数量的元素,

并且两个数组中的所有相应元素对都是相等的,

则认为这两个数组是相等的。换句话说,

如果两个数组以相同顺序包含相同的元素,

则两个数组是相等的。

同样的方法适用于

所有的其他基本数据类型(ByteshortInt等)。

3

public static void fill(int[] a, int val)

将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。

同样的方法适用于

所有的其他基本数据类型(ByteshortInt等)。

4

public static void sort(Object[] a)

对指定对象数组根据其元素的自然顺序进行升序排列。

同样的方法适用于

所有的其他基本数据类型(ByteshortInt等)。

1)排序 (sort)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
          
          int[] numbers = {5, 3, 8, 1, 4};
          Arrays.sort(numbers);  // 对数组进行排序
           // 输出:[1, 3, 4, 5, 8]
          System.out.println(Arrays.toString(numbers)); 

    }
}

2)二分查找 (binarySearch)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
          
           int[] numbers = {1, 3, 4, 5, 8};
           // 查找元素 4 的索引位置
           int index = Arrays.binarySearch(numbers, 4);  
           System.out.println(index);  // 输出:2

    }
}

3)数组填充 (fill)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
          
           int[] numbers = new int[5];
            // 将数组中的所有元素填充为 10
           Arrays.fill(numbers, 10); 
           // 输出:[10, 10, 10, 10, 10]
           System.out.println(Arrays.toString(numbers));  

    }
}

4)数组比较 (equals)

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
          
           int[] arr1 = {1, 2, 3};
           int[] arr2 = {1, 2, 3};
            // 比较两个数组是否相等
           boolean areEqual = Arrays.equals(arr1, arr2); 
           System.out.println(areEqual);  // 输出:true

    }
}

推荐文档