1.数组
数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或者基本数据类型序列。
数组本身是对象,Java中的对象是存储在堆中的,因此数组无论保存基本数据类型还是对象类型,数组对象本身是存储在堆中的。
声明一个数组对象时不允许指定它的大小(例如:int[5] arr;是错误的),int[] arr;此时获得一个数组对象的引用,JVM只是给这个引用分配了存储空间,为了给数组创建相应的存储空间,必须初始化它。
创建(定义)一个数组时需要指定数组的大小,JVM要在堆上为数组对象分配存储空间。例如:int[] arr = new int[5]。注意:这里数组中的int变量可以使用new操作符来创建,new操作符不能创建单个的基本类型数据。
所有的数组(无论保存基本类型还是对象类型)都有一个静态成员length。
创建一个非基本类型的数组时,你就创建了一个引用数组。例如:Car[] cars = new Car[5];这条语句创建了一个保存Car对象的数组,此时数组保存了5个Car类型的引用,这些引用全都关联到null,也就是此时并未创建任何Car类的实例。
java.util.Arrays类有一套用于数组的static方法,其中有6个基本方法:Arrays.fill()用同一个值填充数组,如果是对象的话,就是复制同一个引用进行填充。Arrays.equals()用来比较整个数组(Arrays.equals(arr1, arr2))。Arrays.sort()用于对数组元素排序(如果元素是对象类型,需要该对象实现了Comparable接口或者具有相关联的Comparator)。Arrays.binarySearch()用于在已经排好序的数组中查找元素(如果对未排序数组使用将产生不可预料的结果。),找到则返回索引,否则返回负数。Arrays.toString()方法可以打印一个数组。Arrays.hashCode()产生数组的散列码。
System.arraycopy()静态方法可以用来复制数组。System.arraycopy(srcArr, srcIndex, destArr, destIndex, len)。