5.1.2 一维数组的初始化
我们知道,只声明了数组,这时候其值为null,要想使用数组,还需要做初始化工作。数组初始化为声明的数组指定数组元素个数,为数组元素分配空间并赋值。数组初始化可以通过如下几种方式完成。
1.直接指定初值的方式
用直接指定初值的方式初始化数组是指在声明数组的同时将数组元素的初值依次写入赋值号(=)后的一对大括号({})内,同时,根据 值的个数确定数组元素的个数,为它分配足够的存储空间并将这些值写入相应存储的存储单元。
如:
Char a[] = {‘N’,’C’,’E’,’P’,’U’};
从该语句可以得到信息:该数组名为a,数组元素的数据类型为char,每个元素占用2个字节的存储空间,大括号中共有5个值,因此数组元素的个数为5,系统会为该数组分配2*5=10个字节的连续存储空间。经过数组初始化后,a数组的5个元素值分配情况为:a[0]=’N’, a[1]=’C’,a[2]=’E’,a[3]=’P’,a[4]=’U’。
在java中,数组的下标是从0开始的,因此对于含有n个元素的数组a来说,其最小下标为0,下标为n-1,而不是n。
2. 用new关键字初始化数组
用关键字new初始化数组时,除了为数组指定数组元素个数、分配存储空间外,还会为数组元素按照数据类型的不同赋初值。具体如下:
若为数值型,数组元素的默认值为0,;
若为布尔型,数组元素的默认值为false;
若为引用型,数组元素的默认值为空(null)。
(1) 先声明数组,再初始化数组。这里实际上是两条语句,具体格式如下:
数据类型[] 数组名; 或数据类型 数组名[];
数组名=new 数据类型[数组长度];
第一条语句是数组声明语句,第二条语句则是初始化语句。需要注意的是这两条语句中数组名、数据类型必须一致,否者会产生错误或意想不到的结果。
数组的长度可以是直接的int类型常数,也可以是已经赋值的int类型变量或int类型表达式。
例如:
Int n=10;
Int[] a;
a = new int[n];
这样,在创建数组时提供了一定的灵活性,可以在程序中根据变量n的大小动态创建数组,需要注意的是,虽然n是变量,但根据n的值创建的数组一旦创建,数组的长度就固定下来了,不在允许修改。
上面的语句中a数组中含有10个元素,初始化工作会使数组中的10个元素根据不同数据类型被赋以初值,因为这里是int,所以,10个元素的初值为0。
(2)在声明数组的同时用new关键字初始化数组。实际上,这种方式是将第一种方式的两条语句合并为一条语句。格式如下:
数据类型[] 数组名 = new 数据类型[数组长度];
或
数据类型 数组名[] = new 数据类型[数组长度]
例如:
Int n=10;
Int[] a = new int[n];
(3) 用一个已经初始化的数组对数组初始化
除了上述两种形式的初始化外,还可以直接使用一个已经初始化的数组对新声明的数组进行初始化。
格式如下:
数据类型[] 数组名=已初始化数组
例如:
Int[]a=new int[10];
Int[]b=a;
这种初始化会使得数组a与b具有相同的存储地址,即,a数组与b数组指向了同一个物理地址,任何对数组a的改变都会使数组b做相应的修改,同样,任何对数组b的修改也会使a数组的内容发生变化。
要想验证上述观点可以使用java的输出语句System.out.println(数组名)的方式来查看:
System.out.println(a);
System.out.println(b);
的输出结果是否相同,这里输出的是地址,如果相同表明数组a和b的地址相同,即它们实际上是一个数组的两种表现形式。
3.混合方式
有时候,数组的初始化可以综合上面两种方式进行,如下语句
int[] a = new int[]{1,2,3,4};
同样可达到初始化的目的,这是一种常用的初始化方式,在今后的学习中读者还会见到。
2017年计算机二级考试java章节辅导:一维数组的初始化.doc正在阅读:
2017年计算机二级考试java章节辅导:一维数组的初始化11-25
2019年山西中考物理试题与答案,2019年甘肃天水中考物理试题11-04
民事撤诉申请书范文【三篇】10-18
大学生入团志愿书范文800字_大学生入团志愿书范本800字11-21
托福阅读练习材料:说谎影响健康11-12
有关元旦的日记500字【五篇】10-22
幼儿园六一游园活动总结600字06-25
青春励志班级口号三篇11-30