因为数组是作为兑现实现的,所以每个数组都包含有数组元素数量的实例变量length(换句话说,length包含了数组的大小).演示该属性的程序如下所示:
public static void main(String args[]) { int list[] = new int[10]; int nums[] = {1,2,3}; int table[][] = { {1,2,3}, {4,5}, {6,7,8,9} }; System.out.println("length of list is "+list.length); System.out.println("length of nums is "+nums.length); System.out.println("length of table is "+table.length); System.out.println("length of table[0] is "+table[0].length); System.out.println("length of table[1] is "+table[1].length); System.out.println("length of table[2] is "+table[2].length); for(int i=0;i<list.length;i++) { list[i] = i * i; } System.out.println("Here is list:"); for(int i=0;i<list.length;i++) { System.out.print(list[i]+","); } }
输出:
length of list is 10 length of nums is 3 length of table is 3 length of table[0] is 3 length of table[1] is 2 length of table[2] is 4 Here is list: 0,1,4,9,16,25,36,49,64,81,
请特别注意二维数组table使用length的方法,如上所述,二维数组是数组的数组.因此,应当使用如下表达式:
table.length
其中包含存储在table中的数组的数量,本例中为3.为获取table中每个数组的长度,需要使用下面这个表达式:
table[0].length
本例中,该表达式获取的是第一个数组的长度.
另一点需要注意的是,在LengthDemo中,for循环使用list.length来控制迭代发生的次数.因为每个数组都有自己的长度,所以可以使用这一信息,而无须手动跟踪数组的长度.切记,length的值与实际使用的元素的数量无关,其中包含的是数组可以存储的元素数量.
有了length成员后,就使特定类型的数组操作执行起来更简单,更安全,从而也就简化了许多算法.例如,下面的程序使用length把一个数组复制到另一个数组中,并且同时防止了数组溢出及其带来的运行时异常:
public static void main(String args[]) { int i; int nums1[] = new int[10]; int nums2[] = new int[10]; for(i=0;i<nums1.length;i++) nums1[i] = i; if(nums2.length >= nums1.length) for(i=0;i<nums1.length;i++) nums2[i] = nums1[i]; else for(i=0;i<nums2.length;i++) nums2[i] = nums1[i]; for(i=0;i<nums2.length;i++) System.out.println("nums2["+i+"] : "+nums2[i]); }
输出:
nums2[0] : 0 nums2[1] : 1 nums2[2] : 2 nums2[3] : 3 nums2[4] : 4 nums2[5] : 5 nums2[6] : 6 nums2[7] : 7 nums2[8] : 8 nums2[9] : 9
这里,length有助于两个重要功能的执行.第一,他确保目标数组的容量足以存储源数据.第二,他提供了执行复制的for循环的结束条件.当然,在这个简单的示例中,很容易就可以知道数组的大小,但是这种方法也可以应用更广泛,更具挑战的程序设计中.