一维数组
新建数组
新建数组(不分配内存)的两种方式
java
int[] a; // 推荐
int b[];新建数组且分配内存的两种方式
java
int[] a = new int[100];
int b[] = new int [100];新建数组且初始化的三种方式
java
int[] a = {1, 2, 3};
int a[] = {1, 2, 3};
int[] a = new int[] {1, 2, 3};
// 注意,不能先 new 再初始化
// int[] a = new int[3];
// a = {1, 2, 3}; 是错误的写法数组越界
Java 数组越界,会被 JVM 抛出异常 ArrayIndexOutOfBoundsException
Java 的 for-each 循环
对于数组 a,可以这样遍历,类似 C++11
java
for (int i : arr) {
// blabla
}数组的 copy
Java 中,数组名字其实是一个指针,指向数组对应的内存区域 所以如果对于数组 a 和 b 执行赋值操作,实际上相当于把 b 的地址赋给 a
对于已经存在的 a b 两个数组,Java 中提供了 System.arraycopy() 可以用来方便地进行数组的 copy 操作 System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length),如
java
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {6, 7, 8, 9, 0};
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
// 执行完毕后,arr2 也是 {1, 2, 3, 4, 5}若已经存在 a 但不存在 b,希望用 a 的内容对 b 进行初始化,可以使用 Array.copyOf(src, len) 完成,如
java
int[] arr1 = {1, 2, 3};
int[] arr2 = Array.copyOf(arr1, arr1.length);若想要使用 a 的全部内容初始化 b,可以直接使用 a.clone(),如
java
int[] arr1 = {1, 2, 3};
int[] arr2 = a.clone();java.util.Arrays 当中的实用方法
Arrays.toString(arrName)Arrays.sort(arrName)Arrays.fill(name, val)Arrays.equals(arr1, arr2)Arrays.binarySearch(arrName, val)