------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、学习目标
完成本模块的学习后,应该能够:
- 声明并创建原始数组、类数组或数组类型
- 解释为什么数组的元素需初始化
- 给出数组定义并初始化数组元素
- 确定一个数组中元素的数量
- 创建多维数组
- 编写从一个数组类型到另一个数组类型数组值的拷贝代码
- 相同类型的成组数据对象
- 原始类型或类类型数组声明
- 为一个引用创建空间
- 数组是一个对象,而不是为原始类型储备的存储器
-
典型的数组是用来集合相同类型的对象并通过一个名称来引用这个集合。
你可以声明任何类型的数组──原始类型或类类型:
<span style="font-size:14px;">char s[ ]; Point p [ ]; // where point is a class<span style="font-family: 宋体; background-color: rgb(255, 255, 255);"> </span></span>
在Java编程语言中,即使数组是由原始类型构成,甚或带有其它类类型,数组也是一个对象。声明不能创建对象本身,而创建的是一个引用,该引用可被用来引用数组。数组元素使用的实际存储器可由new语句或数组初始化软件动态分配。
上述这种将方括号置于变量名之后的声明数组的格式,是用于C、C++和Java编程语言的标准格式。这种格式会使声明的格式复杂难懂,因而,Java编程语言允许一种替代的格式,该格式中的方括号位于变量名的左边:
<span style="font-size:14px;">char[ ]s; Point[ ]p; </span>
这样的结果是,你可以认为类型部分在左,而变量名在右。上述两种格式并存,你可选择一种你习惯的方式。声明不指出数组的实际大小。
- 使用关键字new 创建一个数组对象
<span style="font-size:14px;"><span style="white-space:pre"> </span>s = new char 26;</span>
用来指示单个数组元素的下标必须总是从0开始,并保持在合法范围之内--大于0或等于0并小于数组长度。任何访问在上述界 限之外的数组元素的企图都会引起运行时出错。下面还要谈到一些更好的数组初始化方法。
四、 初始化数组
初始化一个数组元素,用初始化值创建一个数组
<span style="font-size:14px;"><span style="white-space:pre"> </span>String names [] = {“Georgianna”, “Jen”, “Simon”};</span>
当创建一个数组时,每个元素都被初始化。在上述char数组s的例子中,每个值都被初始化为0 (\u0000-null)字符;在数组p的例 子中, 每个值都被初始化为null,表明它还未引用一个Point对象。在经过赋值 p[0] = new Point()之后,数组的第一个元素引用为 实际Point对象。
Java编程语言允许使用下列形式快速创建数组:
<span style="font-size:14px;"><span style="white-space:pre"> </span> String names =
<span style="white-space:pre"> </span> “Georgianna”,
<span style="white-space:pre"> </span> “Jen”,
<span style="white-space:pre"> </span> “Simon”,
;</span>
其结果与下列代码等同:
<span style="font-size:14px;"><span style="white-space:pre"> </span>String names ;
<span style="white-space:pre"> </span> names = new String 3;
<span style="white-space:pre"> </span>names 0 = “Georgianna”;
<span style="white-space:pre"> </span>names 1 = “Jen”;
<span style="white-space:pre"> </span> names 2 = “Simon”;</span>
五、多维数组
Java编程语言没有象其它语言那样提供多维数组。因为一个数组可被声明为具有任何基础类型,所以你可以创建数组的数组。 一个二维数组如下例所示:
<span style="font-size:14px;"> <span style="white-space:pre"> </span>int twoDim [][] = new int [4][];
<span style="white-space:pre"> </span>twoDim[0] = new int[5];
<span style="white-space:pre"> </span>twoDim[1] = new int[5];</span>
首次调用new而创建的对象是一个数组,它包含4个元素,每个元素对类型array of int的元素都是一个null引用并且必须将数组的 每个点分别初始化。
因为这种对每个元素的分别初始化,所以有可能创建非矩形数组的数组。也就是说,twoDim的元素可按如下方式初始化:
<span style="font-size:14px;"> twoDim0 = new int 2
twoDim1 = new int 4;
twoDim2 = new int 6;
twoDim3 = new int 8;</span>
由于此种初始化的方法烦琐乏味,而且矩形数组的数组是最通用的形式,因而产生了一种”速记”方法来创建二维数组。例如:
<span style="font-size:14px;"> <span style="white-space:pre"> </span>int twoDim = new int 45;</span>
可被用来创建一个每个数组有5个整数类型的4个数组的数组。
六、数组界限在Java编程语言中,所有数组的下标都从0开始。 一个数组中元素的数量被作为具有length属性的部分数组对象而存储; 这个值 被用来检查所有运行时访问的界限。如果发生了一个越出界限的访问,那么运行时的报错也就出现了。
使用length属性的例子如下:
<span style="font-size:14px;"><span style="white-space:pre"> </span>int list = new int 10;
for (int i= 0; i< list.length; i++)
System.out.println(listi);</span>
使用length属性使得程序的维护变得更简单。
- 不能调整数组的大小
- 可使用相同的引用变量来引用一个全新的数组
<span style="font-size:14px;"> <span style="white-space:pre"> </span> int elements [] = new int [6];
elements = new int [10];</span>
数组一旦创建后,其大小不可调整。然而,你可使用相同的引用变量来引用一个全新的数组:
<span style="font-size:14px;"><span style="white-space:pre"> </span> int myArray [] = new int [6];
myArray = new int [10];</span>
在这种情况下,第一个数组被有效地丢失,除非对它的其它引用保留在其它地方。Java编程语言在System类中提供了一种特殊方法拷贝数组,该方法被称作arraycopy()。例如,araycopy可作如下使用:
<span style="font-size:14px;">int myArray[] = { 1, 2, 3, 4, 5, 6 };
int hold[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
System.arraycopy(myArray, 0, hold, 0,
myArray.length);</span>