首页 理论教育一维数组的声明和内存分配注意事项

一维数组的声明和内存分配注意事项

【摘要】:一个数组声明语句可同时声明多个数组变量。例如:2.一维数组的内存分配需要注意的是,与C、C++不同,Java在声明数组时不为数组元素分配内存,因此不用在[]中指出数组元素的个数。在Java语言中,为了保证安全性,在引用数组元素时要对其进行越界检查。若数组元素的下标小于0、大于或等于数组长度,则将产生异常。

在Java中创建数组需3个步骤:数组的声明;数组的内存分配;数组的初始化

1.一维数组的声明

数组的声明方式和一般变量的声明方式非常类似,需要声明一个数组变量名及其数据类型,并用[]与一般的变量进行区别。声明一维数组的格式如下:

其中,type(数据类型)可以为Java语言中的任意数据类型,包括基本数据类型和对象类型;arrayName(数组名)必须为一个合法的标识符;[]是数组标志,指明该变量是一个数组类型的变量,既可以放在数据类型的后面,也可以放在数组名之后。例如,语句“int intArray[];”声明了一个整型数组intArray,该数组中的每个元素都为整型数据。

一个数组声明语句可同时声明多个数组变量。例如:

2.一维数组的内存分配

需要注意的是,与C、C++不同,Java在声明数组时不为数组元素分配内存,因此不用在[]中指出数组元素的个数(即数组长度)。Java使用new运算符创建数组,其格式如下:

其中,arraySize指明数组的长度。例如:

通常,可以将数组的声明和创建合并为一条语句,即在声明数组的同时用new运算符为数组分配内存空间。其格式如下:

例如:

用new运算符为数组分配的内存空间是动态的,可根据程序的需要随时用new运算符为已分配空间的数组重新分配空间。需要注意的是,对数组再次动态分配内存空间时,该数组原有的数据将会丢失。(www.chuimin.cn)

3.一维数组的初始化

在使用new运算符创建数组时,若未指定数组元素的初值,系统将为数组的每个元素赋默认值。对于整型数据,数组元素的默认值为0;对于浮点型数据,数组元素的默认值为0.0;对于布尔型数据,数组元素的默认值为false;对于字符型数据,数组元素的默认值为'\u0000';对于所有的对象类型(包括字符串类型)数据,数组元素的默认值为null。

在编写代码时,通常需要根据实际情况对数组进行初始化。数组的初始化方式有以下两种。

(1)在声明数组的同时进行初始化,或通过分别为数组元素赋值来对数组进行初始化。例如:

采用这种方式时,可以不使用new运算符。该语句声明并创建了数组a,同时对数组进行了初始化,使a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5。此时,数组的长度由{}中数据的个数决定。

(2)在声明并创建数组后,通过为每个元素分别赋值来对数组进行初始化。例如:

4.一维数组的引用

当定义了一个数组,并为它分配了内存空间后,就可以引用该数组中的每个元素了。数组元素的引用方式如下:

其中,index为数组下标,它可以是整型常量或表达式,index的数据类型只能为short、int、byte,不能为long。数组下标从0开始,一直到数组长度减1。

在Java语言中,为了保证安全性,在引用数组元素时要对其进行越界检查。若数组元素的下标小于0、大于或等于数组长度,则将产生异常。

此外,由于数组在Java语言中被作为一个对象来处理,因此每个数组都有一个length属性,其值为数组的长度,可以通过“数组名.length”的形式引用。例如,a.length指明数组a的长度。在实际编程中,提倡尽量使用数组的length属性值来指明数组的上界元素,这样可以有效避免数组越界情况,且能使数组的处理代码具有良好的可复用性,能够适应数组长度的变化。