3.11.1 一维数组(1)
一维数组本质上是一连串类型相同的变量。为了创建数组,首先必须创建期望类型的数组变量。声明一维数组的一般形式如下所示:
其中,type声明了数组的元素类型(也称为基本类型)。元素类型决定了构成数组的每个元素的类型。因此,数组的元素类型决定了数组可以包含什么类型的数据。例如,下面的语句声明了一个名为month_days的数组,该数组的类型是“int数组”:
- type var-name[];
- int month_days[];
尽管这个声明确立了month_days是数组变量的事实,但是这个数组实际上并不存在。事实上,month_days的值被设置为null,这表示数组没有值。为了将month_days链接到一个实际的、物理的整数数组,必须使用new分配一个数组,并将之赋给month_days。new是一个用于分配内存的特殊运算符。
在后面的章节中会更加详细地分析new运算符,但是现在需要使用它为数组分配内存。将new运算符用于一维数组的一般形式如下所示:
其中,type指定了将要分配的数据的类型,size指定了数组中元素的数量。array-var是链接到数组的数组变量,即为了使用new分配一个数组,必须指定要分配元素的类型和数量。通过new分配的数组,其元素会被自动初始化为0(对于数值类型)、false(对于布尔类型)或null(对于引用类型,引用类型将在后面的章节中描述)。下面这个例子分配了一个具有12个元素的整数数组,并将该数组链接到month_day:
- array-var = new type[size];
- month_days = new int[12];
执行完这条语句之后,month_days将指向具有12个整数的数组。此外,数组中的所有元素都被初始化为0。
下面回顾一下:获得一个数组需要两个步骤。首先,必须声明一个期望数组类型的变量。其次,必须使用new分配容纳该数组的内存,并将其赋给数组变量。因此,在Java中所有数组都是动态分配的。如果不熟悉动态分配的概念,不要着急。在本书的后面会对其进行详细描述。
一旦分配数组,就可以通过在方括号中指定索引的方法来访问数组中的特定元素。所有数组索引都是从0开始的。例如,下面这条语句将数值28赋给month_days的第2个元素:
下面这条语句显示在索引3处保存的值:
- month_days[1]=28;
下面的程序将所有这些内容组合到一起,创建了一个包含一年中每个月份天数的数组:
- System.out.println(month_days[3]);