数组
数组是有序数据的集合, 数组中的每个元素具有相同的类型。数组名和下标可唯一地确定数组中的元素。数组可分为一维数组和多维数组。
一维数组
声明方式:
type arrayName[];
或 type[] arrayName;
type可以是Java中任意的数据类型, arrayName为数组名。
如: int intArray[];
声明了一个名为intArray的整型数组, 数组中的每个元素为int型数据。
Java在数组的声明中并不为数组元素分配内存, 因此 [ ] 中不用指出数组中元素个数, 即数组长度。
在访问数组的任何元素之前,我们必须为它分配内存空间, 这可用new操作符, 其格式如下:
arrayName = new type[arraySize];
其中,arraySize指明数组的长度。
如: intArray = new int[3]; 为该数组分配了3个int型整数所需的内存空间。
通常, 这两部分可以合在一起, 格式如下:
type arrayName[] = new type[arraySize];
如: int intArray[] = new int[3];
用new操作符为数组分配内存空间后,就可以引用数组中的每一个元素。数组元素的引用方式为: arrayName[index]
其中: index为数组下标,它可以为整型常数或表达式。如a[3], b(i为整型), c[6*I]等。下标从0开始, 一直到数组的长度减1。
对于上面例子中的intArray数组来说,它有3个元素,分别为:
intArray[0], intArray[1], intArray[2]。(注意: 没有intArray[3]。)
另外,与C、C++中不同,Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度。
例如: intArray.length指明数组intArray的长度。
数组的初始化
对数组元素可以按照上述的例子进行赋值。也可以在定义数组的同时进行初始化。
如: int a[]={1,2,3,4,5};
用逗号(,)分隔数组的各个元素,系统自动为数组分配一定的内存空间。
例3.5:数组的使用:
public class ArrayTest{ public static void main(String args[]){ int i; int a[]=new int[5]; for (i=0;i<5;i++) a=i; for (i=a.length-1;i>=0;i--) System.out.println("a["+i+"]="+a); } }
多维数组
与C、C++一样, Java中多维数组可被看作数组的数组。例如二维数组就可看成是一个特殊的一维数组, 该数组的每个元素又是一个一维数组。下面我们主要以二维数组为例来说明多维数组。
二维数组的声明方式如下:
type arrayName[][];
如: int intArray[][];
与一维数组一样,这时对数组元素也没有分配内存空间,同要使用运算符new来分配内存,然后才可以访问每个元素。
对二维数组中每个元素,引用方式为:
arrayName[index1][index2]
其中index1、index2为下标, 可为整型常数或表达式, 如a[2][3]等。数组每一维的下标也都从0开始。
在声明二维数组的同时也可对它进行初始化。
如:int a[][]={{2,3},{1,5},{3,4}};
定义了一个3×2的数组,并对每个元素赋值。
数组的越界
如果使用数组分量时,其下标超过规定的值,则会发生数组的越界。这时,虽然程序能通过编译,但在运行时会产生一个名为ArrayIndexOutOfBoundsException 的例外,所以编程时要注意检查数组下标。