Java编程思想第四版——第十六天
2012-04-24
131-138/913
Java编程思想第四版——第十六天
5.8 数组初始化
数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号下标操作符【】来定义和使用的。定义一个数组,只需在类型名后加上一对空方括号即可:int[] a1;。方括号也可以置于标识符后面:int a1[];。两种格式含义一样,后一种格式符合C和C++程序员的习惯。前一种格式或许更合理,表明类型是一个int型数组。
编译器不允许指定数组的大小。
所有数组(无论它们的元素是对象还是基本类型)都有一个固有成员,可以通过它获知数组内包含了多少个元素,但不能对其修改。这个成员就是length。与C和C++类似,java数组计数也是从第0个元素开始,所以使用的最大下标数十length-1.超出这个边界,C和C++会“默默”接受,并允许访问所有内存。Java中,一旦访问下标过界,就会出现运行时错误(即异常)。
如果可能,数组尽量在定义的同时进行初始化。
创建一个非基本类型的数组,就是创建了一个引用数组。需要创建新的对象,并把对象赋值给引用,初始化进程才算结束。如果忘记了创建对象,并且试图使用数组中的空引用,就会在运行时产生异常。
两种方式:
1.Integer[] a1 = new Integer[20];
a1[0] = 10;
2.Integer[] a2 = {new Integer(1), new Integer(2), 3, };初始化列表的最后一个逗号是可选的(这一特性使维护长列表变得更容易)。
3. Integer[] a3 = new Integer[] {new Integer(1), new Integer(2), 3, };
5.8.1 可变参数列表
第二种形式提供了一种方便的语法来创建对象并调用方法,以获得与C的可变参数列表(C通常把它简称为varargs)一样的效果。这可以应用于参数个数或类型未知的场合。所有类都直接或间接继承于Object类,所以可以创建Object数组为参数的方法。
不定义toString()方法,就打印类的名字和对象的地址。
有了可变参数,不用显示的编写数组语法了,指定参数时,编译器会填充数组,传递一组事物,可以当作列表传递,传递的是一个数组,编译器不会再执行任何转换。
如果列表没有任何元素,转变成的数据的尺寸为0。
getClass()属于Object的方法,产生对象的类。