首页 百科知识 数组元素的赋值及其初始化

数组元素的赋值及其初始化

时间:2022-02-19 百科知识 版权反馈
【摘要】:7.1.2 数组元素的赋值及其初始化通过new方法创建数组后,每个元素初始化为其数据类型的默认值。如果数组元素很多,那么可以采用数组访问的方式对各数组元素进行显式赋值初始化。数组元素的引用方式为:arrayName[index]数组下标可以为整型常数或表达式,跟C语言一样,java语言数组的下标也是从0开始。数组charArr1和数组charArr2虽然各元素的值都相同,但它们是两个不同的数组对象,所以输出false。

7.1.2 数组元素的赋值及其初始化

通过new方法创建数组后,每个元素初始化为其数据类型的默认值。数值类型默认为0,char类型默认为编码为0的字符,boolean类型默认为false,引用类型默认为null。此外,还可以对数组进行显式初始化。例如:

注意:跟常规的方法不同,studentNumber={1,2,3,4,5,6,7,8,9,10};这条语句包括的声明、创建、初始化数组必须在一条语句中,若像下述语句,分开则是错误的:

显然,数组初始化块适合于对元素较少的数组进行初始化。如果数组元素很多,那么可以采用数组访问的方式对各数组元素进行显式赋值初始化。

数组是一个对象,它也有自己的成员变量和方法。数组一旦创建,就可以通过数组对象的引用访问数组中的每一个元素,或者引用数组的成员变量和方法。

数组元素的引用方式为:

arrayName[index]

数组下标可以为整型常数或表达式,跟C语言一样,java语言数组的下标也是从0开始。数组的元素通过下标来访问,例如:在dataType[]y=new dataType[2];语句后可执行

语句dataType y=arrayName[4];是非法的,因为访问越界了,程序运行时会出现以下错误提示:

Java.lang.ArrayIndexOutOfBoundsException:4

又如char[] charArr={′a′,′b′,′c′,′d′,′西′,′安′};,数组charArr各元素的引用分别为:charArr[0],charArr[1],charArr[2],charArr[3],charArr[4],charArr[5]。

对于Point[] pointArr=new Point[3];,下面循环语句利用数组访问表达式对数组pointArr的各元素进行赋值:

for(int i=0;i<3;i++)pointArr[i]=new Point();

该循环语句使用不带形参的构造方法创建了3个Point对象,而数组pointArr的3个数组元素分别指向这3个Point对象。

每个数组都有一个有名常量length指明它的长度,格式:数组变量名.length。

例如:studentNumber.length指明数组studentNumber的长度。

利用该有名常量可以将上面的初始化语句改写为:

【例7-1】 输出Fibonacci数列的前5个元素。Fibonacci数列的定义为:F1=F2=1,Fn

程序运行结果:

【例7-2】 Object[]型数组的数组元素一致性问题。

程序运行结果:

分析与思考:a数组中元素的类型有字符串、整型、字符型、布尔型和双精度型,似乎违反数组元素是相同类型规定,但它们都是Object的子类,而数组类型是Object[],规定数组元素为Object,子类可以充当父类,这样,各个数组元素类型就符合Object[]的要求,即从Object的级别上讲,各数组元素类型是完全相同的。

数组是对象,它也从Object类中继承了equals、toString等方法。

【例7-3】 数组的引用和equals方法举例。

程序运行结果:

分析与思考:equals方法判断两个数组变量是否指向同一个数组对象。数组charArr1和数组charArr2虽然各元素的值都相同,但它们是两个不同的数组对象,所以输出false。数组变量charArr1和charArr3指向同一个数组,所以输出true。而且charArr1[i]与charArr3[i]等价。

在java.util包中,有一个由Java提供的实用类java.util.Arrays。它提供了大量的静态方法供程序员使用。

【例7-4】void sort(Object[]a)排序方法的应用举例。

程序运行结果:

3 4 5 6 7 8 18 36 47 58 66 74

【例7-5】 int binarySearch(Object[]a,Object key)方法对有序数组进行查找举例。

程序运行结果:

n=3

此外,系统类System的静态方法arraycopy()可用来进行数组复制。其格式为:

arraycopy(Object src,int src_position,Object dst,int dst_position,int length)

功能:从源数组src的src_position处,复制到目标数组dst的dst_position处,复制长度为length。

【例7-6】 arraycopy()方法进行数组复制举例。

程序运行结果:

8 18 6 36 7 0 0 0 0 0 0 0

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈