数组
一系列相同类型元素的集合
数组的定义方式
Int [] arr = {1,2,3,4,5};
Int [] arr = new int[5];
一维数组的遍历
for(int i = 0;i<arr.length;i++){ (通过角标访问)
//arr[i];
}
Foreach(int a : arr){ (通过数值访问)
//a
}
Arrays.toString(arr);
数组的拷贝 扩容
-
使用for循环通过角标访问直接拷贝
int [] arr = {1,2,3,4};
int [] brr = new int[arr.length];
System.out.println(Arrays.toString(brr));
-
使用 .clone
int arr[] = {1,2,3,4,5};
int brr[] = arr.clone();
System.out.println(Arrays.toString(brr));
.clone 类似通过for循环进行拷贝
-
调用Arrays.copyOf()方法
int [] arr = {1,2,3,4,5};
int [] brr = new int [6];
brr = Arrays.copyOf(arr,arr.length);
arr = brr;
在调用Arrays.copyOf方法时,在其内部创建一个新的数组,并复制内容,最后返回新创建的数组地址。
最终 arr 保存地址为0x789
0x456最终通过java垃圾回收机制回收
-
调用System.arraycopy()方法
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
int []arr = {1,2,3,4,5};
int [] brr = new int[10];
System.arraycopy(arr,0,brr,3,arr.length);
System.out.println(Arrays.toString(brr));
总结
Arrays.copyOf()方法会产生新的空间;
System.arraycopy()方法需要目标数组,由此拷贝数组,实际是对两个数组进行合并;