Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - 数组



Java 中的数组是什么?

Java 提供了一种称为数组的数据结构,它存储固定大小的相同数据类型的元素的顺序集合。数组用于存储数据集合,但通常更方便地将数组视为相同类型变量的集合。

无需声明单个变量,例如 number0、number1、... 和 number99,您可以声明一个数组变量,例如 numbers,并使用 numbers[0]、numbers[1] 和 ...、numbers[99] 来表示单个变量。

本教程介绍如何声明数组变量、创建数组以及使用索引变量处理数组。

声明数组变量

要在程序中使用数组,必须声明一个变量来引用数组,并且必须指定变量可以引用的数组类型。以下是声明数组变量的语法:

语法

dataType[] arrayRefVar;   // preferred way.
or
dataType arrayRefVar[];  // works but not preferred way.

注意 - 首选样式为dataType[] arrayRefVar。样式dataType arrayRefVar[]来自 C/C++ 语言,并在 Java 中被采用以适应 C/C++ 程序员。

示例

以下代码片段是此语法的示例:

double[] myList;   // preferred way.
or
double myList[];   // works but not preferred way.

创建数组

您可以使用 new 运算符创建数组,语法如下:

语法

arrayRefVar = new dataType[arraySize];

上述语句执行两件事:

  • 它使用 new dataType[arraySize] 创建一个数组。

  • 它将新创建数组的引用赋给变量 arrayRefVar。

声明数组变量、创建数组并将数组的引用赋给变量可以组合在一个语句中,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

或者,您可以按如下方式创建数组:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

数组元素通过索引访问。数组索引从 0 开始;也就是说,它们从 0 开始到arrayRefVar.length-1

示例

以下语句声明一个数组变量 myList,创建一个包含 10 个双精度类型元素的数组,并将它的引用赋给 myList:

double[] myList = new double[10];

下图表示数组 myList。这里,myList 包含十个双精度值,索引从 0 到 9。

Java Array

处理数组

处理数组元素时,我们经常使用for循环或foreach循环,因为数组中的所有元素都是相同类型,并且数组的大小是已知的。

示例:创建、迭代和对数组执行其他操作

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
     
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);  
   }
}

这将产生以下结果:

输出

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

使用数组的 foreach 循环

JDK 1.5 引入了一种新的 for 循环,称为 foreach 循环或增强型 for 循环,它使您可以顺序遍历整个数组,而无需使用索引变量。

以下代码显示数组 myList 中的所有元素:

示例:显示数组的所有元素

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

这将产生以下结果:

输出

1.9
2.9
3.4
3.5

将数组传递给方法

就像您可以将基本类型的值传递给方法一样,您也可以将数组传递给方法。例如,以下方法显示int数组中的元素:

示例

public static void printArray(int[] array) {
   for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
   }
}

您可以通过传递数组来调用它。例如,以下语句调用 printArray 方法来显示 3、1、2、6、4 和 2:

示例

printArray(new int[]{3, 1, 2, 6, 4, 2});

从方法返回数组

方法也可以返回数组。例如,以下方法返回另一个数组的反转数组:

示例

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;
}

Arrays 类

java.util.Arrays 类包含各种静态方法,用于对数组进行排序和搜索、比较数组以及填充数组元素。这些方法针对所有基本类型进行了重载。

序号 方法及描述
1

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

使用二分查找算法在指定的 Object 数组(Byte、Int、double 等)中搜索指定的值。在调用此方法之前,必须先对数组进行排序。如果搜索键包含在列表中,则返回搜索键的索引;否则,返回(-(插入点 + 1))。

2

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

如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中所有对应的元素对都相等,则认为这两个数组相等。如果两个数组相等,则返回 true。所有其他基本数据类型(Byte、short、Int 等)都可以使用相同的方法。

3

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

将指定的 int 值赋给指定 int 数组的每个元素。所有其他基本数据类型(Byte、short、Int 等)都可以使用相同的方法。

4

public static void sort(Object[] a)

根据其元素的自然顺序,将指定的 Object 数组排序为升序。所有其他基本数据类型(Byte、short、Int 等)都可以使用相同的方法。

广告