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.
创建数组
您可以使用以下语法使用新运算符创建数组-
语法
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。
处理数组
在处理数组元素时,我们通常使用 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引入了一种新的循环方式,称为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
传递数组给方法 就像你可以将基本类型的值传递给方法一样,你也可以将数组传递给方法。例如,下面的方法显示了一个整数数组中的元素 – 示例
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 类包含了各种静态方法,用于对数组进行排序和搜索、比较数组以及填充数组元素。这些方法适用于所有的基本类型。
Sr.No. | Method & Description |
---|---|
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) 按照元素的自然顺序,将指定的对象数组按升序排序。所有其他基本数据类型(Byte,short,Int等)也可以使用相同的方法。 |