TIJ_16章 数组

来源:互联网 发布:诲汝知之乎的之 编辑:程序博客网 时间:2024/04/27 18:48

对数组的基本看法:通过使用整形索引值访问它们的元素,并且它们的尺寸不能改变。

数组与其他种类的容器之间的区别有三个方面:效率,类型,保存基本类型的能力。

在java中数组是一种效率最高的存储和随机访问对象引用序列的方式。

数组就是一个简单的线性序列,这使得元素访问速度非常快。缺点是数组大小固定,并且在其生命周期内不可改变。(除非创建一个长度大于此数组的新数组,然后把元素依次复制给新数组,然后再用老数组的引用指向新数组的对象。)

如果想要方法返回一组值,那么利用数组作为返回值。

通常数组不能和泛型很好的结合,例如Peel<Apple> [ ]   peels=new Peel<Apple>[10];//Illegal   非法的  



Arrays类实用方法

equals(): Arrays类提供了重载后的equals()方法,用来比较整个数组。  Arrays.equals(j,i); (deepEquals()用于多维数组)。此方法针对所有基本类型与Object都做了重载,数组相等的条件是元素个数必须相等,并且对应位置的元素也相等。(对于基本类型,需要使用基本类型的包装器类的equals()方法,例如,对int类型使用Integer.equals()作比较)。u

fill() 复制填充数组。

sort() 用于数组排序

binarySearch() :用于在已经排序的数组中查找元素。

toString() :产生数组的String表示。

hashCode() :产生数组的散列码。

所有这些方法对各种基本类型和Object类重载过。

Arrays.asList() :接收任意的序列或数组作为参数,并将其转变为List容器。


arraycopy();复制数组从i的第0个元素开始,复制i.length元素的个数,复制数组的元素到目标数组j中。 如果超出数组长度,会抛出ArrayIndexOutOfBoundsException。

这个例子说明基本类型数组与对象数组都可以复制。然而,如果复制对象数组,那么只是复制了对象的引用,而不是对象本身的拷贝。这种方式称为浅复制。

System.arraycopy()不会执行自动包装和自动拆包,两个数组必须具有相同的确切类型。

int[] i={33,44,55};

int[] j={2,3,4,5,6,7};
System.arraycopy(i, 0, j, 0, i.length);
System.out.println(Arrays.toString(j));   //[33, 44, 55, 5, 6, 7]



0 0