一维数组 在Java中有两种数据:primitive类型和objects. 数组属于object类型,所以必须用new来创建数组, 同时数组具备一下特性: 1. 数组创建之后就不能改变大小 2. 数组创建之后,若没有指定初始值,则依据数组类型的不同,会预设不同的初始值 int[] myArray; // 定义一个指向数据的refference myArray = new int[100]; // 创建一个可容纳100个元素的数组,并且用myArray指向它,默认所有的元素值被初始化成0
也可以在创建数组的同时进行初始化, 这种方式不用指定数组的长度: int[] myArray = {0,3,6,9,12,15,18,21,24,27}; 或者 int[] myArray = new int[] {0,3,6,9,12,15,18,21,24,27};
3. 数组有一个length属性,可以取回数组中元素的个数 int arrayLength = myArray.length;
二维数组二维数组用数组“名称”与“两个索引”来指定存取数组中的元素。 其定义方式与一维数组类似: int[][] arr = {{1,2,3}, {4,5,6}}; 注意length所代表的长度,数组名后直接加上length(如arr.length),所指的是数组有几行; 指定索引后加上length(如arr[0].length),指的是该行拥有的元素,也就是列的数目。 数组的复制1. 使用System.arraycopy()方法 System.arraycopy(来源,起始索引,目的,起始索引,复制长度); 例如: int[] arr1 = {1,2,3,4,5}; int[] arr2 = new int[5]; System.arraycopy(arr1, 0, arr2, 0, arr1.length); 2. 在Java SE 6中,Arrays类新增了copyOf()方法,可以直接返回一个新的数组对象,而其中包括复制的内容 例如: import java.util.Arrays; int[] arr1 = {1,2,3,4,5}; int[] arr2 = Arrays.copyOf(arr1,arr1.length); Arrays的copyOf()方法返回的数组是新的数组对象,所以改变返回数组中元素的值不会影响原来数组中元素的值。copyOf()方法中第二个变量指定新数组的长度,如果新数组的长度超过原来数组的长度,则多出来的元素会保留数组默认值。 除了copyOf()方法外,还有copyOfRange()方法,可以指定来源数组以及要复制的索引范围: int arr1 = {1,2,3,4,5}; int arr2 = Array.copyOfRange(arr1,1,4); // 复制索引1开始到索引4(但不包括索引4)的元素,arr2的元素会是2,3,4
Array类Array类位于java.util包中,它提供了几个方法可以直接使用: sort() - 对指定数组排序,使用的是快速排序法 binarySearch() - 让你对已排序的数组进行二分查找,如果找到指定的值就返回该值所在的索引,否则就返回负值 fill() - Arrays.fill()将已创建数组的默认值改为指定值 equals() - 比较两个数组中的元素值是否全相等,如果相等返回true,否则返回false
foreach与数组在Java SE 6中, foreach的语法为: int[] arr = {1,2,3,4,5}; for(int element : arr) System.out.println(element); 注意, element类型必须与数组元素类型相同
|