数组是一个固定长度的数据结构,用于保存多个相同数据类型的值。在数据类型之后或在变量声明中的变量名称之后放置[],使变量成为数组。
例如,
1intmyID;
上面是一个简单的变量声明。 这里,int是数据类型,myID是变量名。
数组声明
上面的这个声明意味着myID变量可以保存一个整数值。如果要声明数组,可在上面的声明中的数据类型之后放置[],如下所示 -
1int[] myID;
使myID是一个数组变量。上面的声明应叫作“myID是一个int数组”。可以通过在变量名之后放置[]来使myID变量成为一个数组,像这样:
1intmyID[];
上述两个声明都是有效的。
不能在声明数组时指定数组可以保存的值的数量。可以声明一个数组来保存同数据类型的多个值。 以下是其它形式的数组声明示例:
1
2
3
4
5
6
7
8
// salary can hold multiple float values
float[] salary;
// name can hold multiple references to String objects
String[] name;
// emp can hold multiple references to Employee objects
Employee[] emp;
创建数组
数组创建的一般语法如下:
以下代码创建Arraylength长度类型为ArrayDataType的数组对象
1newArrayDataType[Arraylength];
要创建一个数组来存储5个int类型的值:
1newint[5];
在此表达式中,5是数组的长度,它也称为数组的维度。有多个维度的数组称为多维数组。还可以将数组的声明及其创建在一个语句中组合。
1int[] myID = newint[5];
因为所有数组都是对象,所以它们的引用可以分配给对象类型的引用变量。 例如,
1
2
int[] myID = newint[5]; // Create an array object
Object obj = myID; // A valid assignment
显式数组初始化
当声明数组或使用new运算符创建数组对象时,可以显式初始化数组的元素。元素的初始值由逗号分隔,并用大括号{}括起来。
1
2
// Initialize the array at the time of declaration
int[] myID = {1, 2, 3, 4, 5};
此代码创建长度为5的int数组,并将其元素初始化为1,2,3,4和5。数组的长度与数组初始化列表中指定的值的数量相同。逗号跟随初始化列表中每个值直到最后一个值。
1
2
// A comma after the last value 5 is valid.
int[] myID = {1, 2, 3, 4, 5, };
或者,可以初始化数组的元素,如下所示:
1int[] myID = newint[]{1, 2, 3, 4, 5};
对于引用类型数组,可以指定初始化列表中的对象列表。以下代码说明了String的数组初始化。
1String[] names = {newString("A"), newString("B")};
或
1String[] names = {"C", "D"};
增强for循环数组
可以使用for-each循环与数组。语法如下:
1
2
3
for(DataType e : array) {
}
以下代码使用for-each循环打印int数组的所有元素:
1
2
3
4
int[] numlist = {1, 2, 3};
for(intnum : numlist) {
System.out.println(num);
}
可以使用基本的for循环完成同样的事情,如下:
1
2
3
4
5
int[] numlist = {1, 2, 3};
for(inti = 0; i < numlist.length; i++) {
intnum = numlist[i];
System.out.println(num);
}
数组对象的类
数组是对象。Object类中的getClass()方法返回类的引用。
以下代码说明如何获取数组的类名。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
publicclassMain {
publicstaticvoidmain(String[] args) {
int[] iArr = newint[1];
int[][] iiArr = newint[1][1];
int[][][] iiiArr = newint[1][1][1];
String[] sArr = { "A", "B"};
String[][] ssArr = { { "A"}, { "B"} };
String[][][] sssArr = {}; // A 3D empty array of string
// Print the class name for all arrays
System.out.println("int[]:"+ getClassName(iArr));
System.out.println("int[][]:"+ getClassName(iiArr));
System.out.println("int[][][]:"+ getClassName(iiiArr));
System.out.println("String[]:"+ getClassName(sArr));
System.out.println("String[][]:"+ getClassName(ssArr));
System.out.println("String[][][]:"+ getClassName(sssArr));
}
publicstaticString getClassName(Object obj) {
Class c = obj.getClass();
String className = c.getName();
returnclassName;
}
}
上面的代码生成以下结果。
1
2
3
4
5
6
int[]:[I
int[][]:[[I
int[][][]:[[[I
String[]:[Ljava.lang.String;
String[][]:[[Ljava.lang.String;
String[][][]:[[[Ljava.lang.String;
数组的类名以左中括号[开头。左括号的数量等于数组的维数。
网友评论