当数组中每个元素都只带有一个下标时,这种数组就是“一维数组”。一维数组实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组。
创建一维数组
为了在程序中使用一个数组,必须声明一个引用该数组的变量,并指明整个变量可以引用的数组类型。
数组的声明有两种形式:一种是中括号”[]“跟在元素数据类型之后,另一种是中括号”[]“跟在变量名之后,
格式为:
数据类型[] 数组名;
或者
数据类型 数组名[];
以上两种格式都可以声明一个数组,其中的数据类型既可以是基本数据类型,也可以是引用数据类型。数组名可以是任意合法的变量名。声明数组就是要告诉计算机该数组中数据的类型是什么。例如:
int[] score; //存储成绩,为整型
double[] price; //存储价格,为浮点型
String[] name; //存储名字,为字符串型
在声明数组时不需要规定数组的长度,例如:
int score[10]; // 这是错误的
分配空间
声明了数组,只是得到了一个存放数组的变量,并没有为数组元素分配内存空间,不能使用。因此要为数组分配内存空间,这样数组的每一个元素才有一个空间进行存储。
简单地说,分配空间就是要告诉计算机在内存中为它分配几个连续的位置来存储数据。在 Java 中可以使用 new 关键字来给数组分配空间。分配空间的格式如下:
数组名 = new 数据类型[数组长度];
其中,数组长度就是数组中能存放的元素个数,显然应该为大于 0 的整数,例如:
score = new int[10];
price = new double[30];
name = new String[20];
这里的 score 是已经声明过的 int[] 类型的变量,当然也可以在声明数组时就给它分配空间,语法格式如下:
数据类型[] 数组名 = new 数据类型[数组长度];
注意:一旦声明了数组的大小,就不能再修改。这里的数组长度也是必需的,不能少。
初始化一维数组
Java 语言中数组必须先初始化,然后才可以使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。
一旦为数组的每个数组元素分配了内存空间,每个内存空间里存储的内容就是该数组元素的值,即使这个内存空间存储的内容为空,这个空也是一个值(null)。不管以哪种方式来初始化数组,只要为数组元素分配了内存空间,数组元素就具有了初始值。初始值的获得有两种形式,一种由系统自动分配,另一种由程序员指定。
数组在初始化数组的同时,可以指定数组的大小,也可以分别初始化数组中的每一个元素。在 Java 语言中,初始化数组有以下 3 种方式。
1.使用 new 指定数组大小后进行初始化
使用 new 关键字创建数组,在创建时指定数组的大小。
创建数组之后,元素的值并不确定,需要为每一个数组的元素进行赋值,其下标从 0 开始。
创建包含 5 个元素的 int 类型的数组,然后分别将元素的值设置为 1、2、3、4、5。如下:
int[] number = new int[5];
number[0] = 1;
number[1] = 2;
number[2] = 3;
number[3] = 4;
number[4] = 5;
如果只指定了数组的长度,那么系统将负责为这些数组元素分配初始值。指定初始值时,系统按如下规则分配初始值。
数组元素的类型是基本类型中的整数类型(byte、short、int 和 long),则数组元素的值是 0。
数组元素的类型是基本类型中的浮点类型(float、double),则数组元素的值是 0.0。
数组元素的类型是基本类型中的字符类型(char),则数组元素的值是‘\u0000’。
数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是 false。
数组元素的类型是引用类型(类、接口和数组),则数组元素的值是 null。
2.使用 new 指定数组元素的值
使用上述方式初始化数组时,只有在为元素赋值时才确定值。可以不使用上述方式,而是在初始化时就已经确定值。
例如,更改上述例子中的代码,使用 new 直接指定数组元素的值。如下:
int[] number = new int[]{1, 2, 3, 4, 5};
上述语句的效果等价于例 2 的效果。
注意:不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值,这样会造成代码错误。
3.直接指定数组元素的值
在上述两种方式的语法中,type 可以省略,如果已经声明数组变量,那么直接使用这两种方式进行初始化。如果不想使用上述两种方式,那么可以不使用 new 直接指定数组元素的值。
在前面例子的基础上更改代码,直接使用上述语法实现 number 数组的初始化。如下:
int[] number = {1,2,3,4,5};
使用这种方式时,数组的声明和初始化操作要同步,即不能省略数组变量的类型。