欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 全面掌握Java数组:从基础到高级

全面掌握Java数组:从基础到高级

2025/9/26 9:00:15 来源:https://blog.csdn.net/FXK_konami/article/details/144887235  浏览:    关键词:全面掌握Java数组:从基础到高级

数组是每种编程语言中都非常重要的数据结构,不同语言在数组的实现和处理上也各有差异。

在Java中,数组用于存储固定大小的同类型元素。

你可以声明一个数组变量,例如 numbers[100],来代替声明100个独立的变量 number0, number1, ..., number99。

本教程将介绍如何在Java中声明、创建和初始化数组,并提供相应的代码示例。


声明数组变量

在使用数组之前,首先需要声明数组变量。以下是声明数组变量的语法:

dataType[] arrayRefVar;   // 推荐的方法或dataType arrayRefVar[];  // 效果相同,但不是推荐方法

注意:建议使用 dataType[] arrayRefVar 的声明风格来声明数组变量。dataType arrayRefVar[] 这种风格是从 C/C++ 语言中继承来的,Java 中采用这种风格是为了让 C/C++ 程序员能够更快地理解 Java 语言。

以下是这两种语法的代码示例:

double[] myList;         // 推荐的方法或double myList[];         // 效果相同,但不是推荐方法

创建数组

在Java中,使用 new 操作符来创建数组,其语法如下:

arrayRefVar = new dataType[arraySize];

这条语句完成了两件事:

  1. 使用 dataType[arraySize] 创建了一个数组。
  2. 将新创建的数组的引用赋值给变量 arrayRefVar。

数组变量的声明和创建可以合并为一条语句,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

此外,还可以使用以下方式创建并初始化数组:

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

数组元素通过索引访问。数组索引从0开始,因此索引范围是从 0 到 arrayRefVar.length - 1。

当数组空间开辟后,可以通过索引访问数组元素,即 数组名称[索引]。需要注意的是,数组索引从0开始,所以索引范围是 0 到 数组长度-1。例如,一个长度为3的数组,可使用的索引是 0, 1, 2。如果访问超出索引范围,将抛出 java.lang.ArrayIndexOutOfBoundsException 异常。

动态初始化的数组中的每个元素都将被赋予该数据类型的默认值。数组是一个有序的数据集合,通常使用 for 循环来操作数组内容。在Java中,可以使用 数组名称.length 动态获取数组的长度。

示例:定义一个 int 型数组 

public class ArrayDemo {public static void main(String[] args) {int data[] = new int[3]; // 开辟一个长度为3的数组data[0] = 10; // 第一个元素data[1] = 20; // 第二个元素data[2] = 30; // 第三个元素for (int x = 0; x < data.length; x++) {System.out.println(data[x]); // 通过循环控制索引}}
}

另一种分步创建数组的方式:

public class ArrayDemo {public static void main(String[] args) {int data[] = null;data = new int[3]; // 开辟一个长度为3的数组data[0] = 10; // 第一个元素data[1] = 20; // 第二个元素data[2] = 30; // 第三个元素for (int x = 0; x < data.length; x++) {System.out.println(data[x]); // 通过循环控制索引}}
}

需要注意的是,数组是引用类型,在使用前必须先开辟空间(实例化)。如果使用了未开辟空间的数组,将抛出 NullPointerException 异常。

public class ArrayDemo {public static void main(String[] args) {int data[] = null;System.out.println(data[0]); // 抛出 NullPointerException}
}

这一原则与之前讲解的对象是一致的。

在实际开发中,数组的使用非常普遍,但上述详细步骤较少出现。通常情况下,会直接使用数组并通过 for 循环进行输出。


处理数组

数组的元素类型和大小是固定的,因此在处理数组元素时,通常使用基本循环或 foreach 循环。

以下是一个完整的示例,展示了如何创建、初始化和操作数组:

public class TestArray {public static void main(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};// 打印所有数组元素for (int i = 0; i < myList.length; i++) {System.out.println(myList[i] + " ");}// 计算所有元素的总和double total = 0;for (int i = 0; i < myList.length; i++) {total += myList[i];}System.out.println("Total is " + total);// 查找最大元素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

在这个示例中,我们首先创建并初始化了一个 double 类型的数组 myList。然后,我们使用 for 循环来打印数组中的每个元素,计算所有元素的总和,并查找数组中的最大值。最后,我们将这些结果输出到控制台。


foreach 循环

JDK 1.5 引入了一种新的循环类型,称为 foreach 循环或增强型循环,它可以在不使用下标的情况下遍历数组。

语法格式如下:

for (type element : array) {System.out.println(element);
}

以下示例展示了如何使用 foreach 循环来打印数组 myList 中的所有元素:

public class TestArray {public static void main(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};// 打印所有数组元素for (double element : myList) {System.out.println(element);}}
}

以上实例编译运行结果如下:

1.9
2.9
3.4
3.5

在这个示例中,我们使用 foreach 循环遍历 myList 数组,并逐个打印出每个元素。这种方式使得代码更加简洁和易读。


数组作为函数的参数

数组可以作为参数传递给方法。例如,下面的例子展示了一个打印 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} 中的元素:

public class ArrayDemo {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] + " ");}}
}

运行结果如下:

3 1 2 6 4 2 

在这个示例中,我们定义了一个名为 printArray 的方法,该方法接受一个 int 类型的数组作为参数,并使用 for 循环遍历数组中的每个元素并打印出来。然后在 main 方法中调用 printArray 方法,并传入一个包含六个整数的数组。


数组作为函数的返回值

下面是一个示例,展示了如何将数组作为函数的返回值。这个方法 reverse 会反转输入的 int 数组,并返回一个新的反转后的数组。

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

在上述示例中,result 数组作为函数的返回值。以下是一个完整的示例,展示如何调用 reverse 方法并打印结果:

public class ArrayDemo {public static void main(String[] args) {int[] originalArray = {1, 2, 3, 4, 5};int[] reversedArray = reverse(originalArray);System.out.print("Original array: ");printArray(originalArray);System.out.print("Reversed array: ");printArray(reversedArray);}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;}public static void printArray(int[] array) {for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}System.out.println();}
}

运行结果如下:

Original array: 1 2 3 4 5 
Reversed array: 5 4 3 2 1 

在这个示例中,我们定义了一个 reverse 方法,该方法接受一个 int 类型的数组作为参数,并创建一个新的数组 result 来存储反转后的元素。通过 for 循环将原数组中的元素从后向前复制到新数组中,最后返回新数组。main 方法中调用 reverse 方法并打印原始数组和反转后的数组。


Arrays 类

java.util.Arrays 类提供了许多方便操作数组的静态方法。这些方法包括给数组赋值、对数组排序、比较数组以及查找数组元素等。

功能和方法

  1. 给数组赋值:通过 fill 方法。
  2. 对数组排序:通过 sort 方法,按升序排列。
  3. 比较数组:通过 equals 方法比较数组中元素值是否相等。
  4. 查找数组元素:通过 binarySearch 方法对已排序的数组进行二分查找。

具体方法说明

序号方法和说明
1public static int binarySearch(Object[] a, Object key) <br> 使用二分查找算法在给定数组中搜索指定的对象(如 Byte, Int, double 等)。数组在调用前必须是已排序的。如果找到指定值,则返回其索引;否则返回 (-(插入点) - 1)
2public static boolean equals(long[] a, long[] a2) <br> 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且所有相应的元素都相等,则认为这两个数组是相等的。换句话说,如果两个数组以相同的顺序包含相同的元素,则它们是相等的。同样的方法适用于其他基本数据类型(如 Byte, short, int 等)。
3public static void fill(int[] a, int val) <br> 将指定的 int 值分配给指定 int 型数组中的每个元素。同样的方法适用于其他基本数据类型(如 Byte, short, int 等)。
4public static void sort(Object[] a) <br> 根据元素的自然顺序对指定对象数组进行升序排列。同样的方法适用于其他基本数据类型(如 Byte, short, int 等)。

以下是一些使用 Arrays 类的方法的示例代码:

import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {// 创建一个整数数组int[] numbers = {5, 2, 9, 1, 5, 6};// 打印原始数组System.out.println("Original array: " + Arrays.toString(numbers));// 给数组赋值Arrays.fill(numbers, 0);System.out.println("Array after fill: " + Arrays.toString(numbers));// 重新初始化数组numbers = new int[]{5, 2, 9, 1, 5, 6};// 对数组进行排序Arrays.sort(numbers);System.out.println("Sorted array: " + Arrays.toString(numbers));// 比较两个数组int[] numbers2 = {5, 2, 9, 1, 5, 6};boolean isEqual = Arrays.equals(numbers, numbers2);System.out.println("Are the arrays equal? " + isEqual);// 查找数组元素int index = Arrays.binarySearch(numbers, 9);if (index >= 0) {System.out.println("Element 9 found at index: " + index);} else {System.out.println("Element 9 not found");}}
}

 在这个示例中,我们展示了如何使用 Arrays 类的 fill、sort、equals 和 binarySearch 方法来操作数组。这些方法使得数组的操作变得更加简洁和高效。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词