计算机等级考试二级java数组辅导
数组是同一类型变量的集合,可以通过一个通用名称引用。数组可以定义为任何类型,一维或多维。数组中的一个特殊元素是通过下标访问的。数组提供了一种对相关信息进行分组的便捷方式。
注意:如果您熟悉C/C++,请注意Java数组的工作方式与它们不同。
3.11.1一维数组
一维数组本质上是同类型变量的列表。要创建数组,必须首先定义所需的数组变量类型。通用一维数组的声明格式为:
键入var-name[];
其中type定义数组的基本类型。类型基本上决定了组成数组的每个基本元素的数据类型。这样,数组的基本类型决定了数组中存储的数据类型。例如,下面的示例定义了一个数据类型为int、名称为month_days的数组。
int month _ days[];
尽管这个例子定义了month_days是一个数组变量,但实际上并不存在数组变量。事实上,month_days的值被设置为空,这意味着一个数组没有值。为了使数组month_days成为一个实际存在的整数数组,必须使用运算符new来分配它的地址,并将其分配给month_days。new操作符是一个专用于分配内存的操作符。
在后面的章节中,你会学到更多关于操作符new的知识,但是现在你需要用它来为数组分配内存。当运算符new应用于一维数组时,其一般形式如下:
array-var = new type[size];
其中type指定要分配的数据类型,size指定数组中变量的数量,array-var是链接到数组的数组变量。也就是说,要使用运算符new来分配数组,必须指定数组元素的类型和数量。用运算符new分配数组后,数组中的元素将自动初始化为零。下面的示例分配一个由12个整数元素组成的数组,并将它们与数组month_days链接起来。
month _ days = new int通过执行这条语句,数组month_days将指向12个整数,数组中的所有元素都将被初始化为零。;
[12]
让我们回顾一下上面的过程:获得一个数组需要2个步骤。在第一步中,您必须定义所需的变量类型。在第二步中,您必须使用运算符new为要存储在数组中的数据分配内存,并将它们分配给数组变量。这样,Java中的数组是动态分配的。如果动态分配的概念对您来说是新的,不要担心,在本书的后面会详细讨论它。
一旦分配了数组,就可以在方括号中指定它的下标来访问数组中的特定元素。
所有数组下标都从零开始。例如,以下语句将值28赋给数组month_days的第二个元素。
month _ days[1]= 28;
下面的程序显示存储在下标为3的数组元素中的值。
system . out . println(month _ days[3]);
综上所述,下面程序定义的数组存储了每月的天数。
//演示一维数组。
类数组{
公共静态void main(String args[]) {
int month _ days[];
month _ days = new int[12];
month _ days[0]= 31;
month _ days[1]= 28;
month _ days[2]= 31;
month _ days[3]= 30;
month _ days[4]= 31;
month _ days[5]= 30;
month _ days[6]= 31;
month _ days[7]= 31;
month _ days[8]= 30;
月_日[9]= 31;
month _ days[10]= 30;
month _ days[11]= 31;
System.out.println("四月有"+ month_days[3] +"天。");
}
}
当您运行这个程序时,它会打印出四月份的天数。如前所述,Java数组下标从零开始,因此四月中天数的数组元素是month_days[3]或30。
可以将数组变量的声明与数组本身的分配结合起来,如下所示:
int month _ days[]= new int[12];
这将是你通常在编写Java程序时看到的专业实践。
数组可以在声明时初始化。这个过程与简单类型初始化的过程相同。数组初始值设定项是包含在花括号中的逗号分隔的表达式列表。逗号分隔数组元素的值。Java会自动分配一个足够大的空空间来容纳您指定数量的初始化元素,而不使用操作符new。例如,为了存储每个月的天数,下面的程序定义了一个初始化的整数数组://上一个程序的改进版本。
class auto array {
public static void main(String args[]){
int month _ days[]= { 31,28,31,30,31,30,31,31,30,31,
30,31 };
system . out . println(" April has "+month _ days[3]+" days,");
}
}
当您运行这个程序时,您会看到它与前面的程序有相同的输出。
Java严格检查以确保您不会意外地存储或引用数组范围之外的值。Java的运行系统会进行检查,确保所有数组下标都在正确的范围内(在这方面,Java与C/C++有本质的不同,C/c++不提供运行边界检查)。例如,正在运行的系统将检查数组month_days的每个下标的值,以确保它包含在0和11之间。如果试图访问数组边界之外的元素(负数或大于数组边界),将会导致运行错误。
下面的示例使用一维数组来计算一组数字的平均值。
//对数值数组求平均值。
班级平均水平{
public static void main(String args[]){
double nums[]= { 10.1,11.2,12.3,13.4,14.5 };
double result = 0;
int I;
for(I = 0;I result = result+nums[I];
system . out . println(" Average is "+result/5);
}
}
3.11.2多维数组
在Java中,多维数组实际上是数组的数组。您可能期望这些数组在形式和操作上与一般的多维数组相同。但是,你会发现有一些细微的差别。定义多维数组变量,每个维度都在各自的方括号中。例如,下面的语句定义了一个名为twoD的二维数组变量。
0条评论