java提供了一种叫作数组的数据结构,它是一种用来存储相同类型元素的固定大小顺序集合。 数组用于存储数据集合,但也可以将数组视为相同类型的变量集合。
声明一个数组变量(如:numbers
)并使用numbers[0]
,numbers[1]
和...
,numbers[99]
来表示单个变量,例如number0
,number1
,...
和number99
,而不是单独地声明各个变量。
本教程介绍如何声明数组变量,创建数组和索引访问数组。
要在程序中使用数组,需要先声明一个变量以引用该数组,并且要指定该变量的数组类型。 以下是声明数组变量的语法 -
语法
datatype[] arrayrefvar; // 推荐方式。
// 或者
datatype arrayrefvar[]; // 有效,但不是推荐方式。
注 - 格式:
datatype [] arrayrefvar
是推荐方式。 格式:datatype arrayrefvar []
来自c/c++语言,可在java中采用以适应c/c++程序员。
示例
以下代码片段是此语法的示例 -
double[] mylist; // 推荐方式。
// 或者
double mylist[]; // 有效,但不是推荐方式。
可以使用new
运算符来创建数组,如以下语法 -
// 声明
datatype[] arrayrefvar; // 推荐方式。
// 创建
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
个double
类型元素的数组,并将数组变量的引用分配给mylist
-
double[] mylist = new double[10];
下图表示数组mylist
。 这里,mylist
数组中包含十个double
值,索引从0
到9
。
处理数组元素时,经常使用for
循环或foreach
循环,因为数组中的所有元素都是相同的类型,并且数组的大小是已知的。
示例
这是一个完整的示例,演示了如何创建,初始化和处理数组 -
import java.util.*;
public class test {
public static void main(string[] args) {
double[] mylist = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 };
// 打印所有元素
for (int i = 0; i < mylist.length; i++) {
system.out.print(mylist[i] + ", ");
}
system.out.println(" ");
// 求和
double total = 0;
for (int i = 0; i < mylist.length; i++) {
total += mylist[i];
}
system.out.println("总和:" + total);
// 查找最大值
double max = mylist[0];
for (int i = 1; i < mylist.length; i++) {
if (mylist[i] > max)
max = mylist[i];
}
system.out.println("元素最大值:" + max);
}
}
执行上面示例代码,得到以下结果:
10.01, 12.19, 23.44, 43.95, 77.88, 65.0,
总和:232.47
元素最大值:77.88
jdk 1.5引入了foreach
循环或增强for
循环,它能够在不使用索引变量的情况下顺序遍历整个数组。
示例
以下代码演示如何遍历数组mylist
中的所有元素 -
import java.util.*;
public class test {
public static void main(string[] args) {
double[] mylist = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 };
// print all the array elements
for (double element : mylist) {
system.out.print(element+", ");
}
}
}
执行上面示例代码,得到以下结果:
10.01, 12.19, 23.44, 43.95, 77.88, 65.0,
就像将原始类型值传递给方法一样,也可以将数组传递给方法。 例如,以下printarray()
方法用来打印int
数组中的元素 -
示例
import java.util.*;
public class test {
public static void main(string[] args) {
double[] mylist = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 };
// print all the array elements
printarray(mylist);
}
public static void printarray(double[] array) {
for (int i = 0; i < array.length; i++) {
system.out.print(array[i] + " ");
}
}
}
执行上面示例代码,得到以下结果:
10.01 12.19 23.44 43.95 77.88 65.0
方法可以返回数组。 例如,以下方法返回一个与给定参数数组相反的数组 -
import java.util.*;
public class test {
public static void main(string[] args) {
double[] mylist = { 10.01, 12.19, 23.44, 43.95, 77.88, 65.00 };
// print all the array elements
printarray(mylist);
printarray(reverse(mylist));
}
public static void printarray(double[] array) {
for (int i = 0; i < array.length; i++) {
system.out.print(array[i] + " ");
}
system.out.println(" ");
}
public static double[] reverse(double[] list) {
double[] result = new double[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
}
执行上面示例代码,得到以下结果:
10.01 12.19 23.44 43.95 77.88 65.0
65.0 77.88 43.95 23.44 12.19 10.01
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) |
根据元素的自然顺序,将指定的对象数组按升序排序。 所有其他原始数据类型(byte,short,int等)可以使用相同的方法。 |