数组的扩容复制
- 需要明确一点:数组长度一旦确定,就不可更改
- 数组的复制:
- 方式一:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
package com.baizhi.day07; public class ArrayCopy{ public static void main(String[]args){ int[] arr = {12,5,69,32,21,45,96}; /* src: 源数组 srcPos: 要复制的源数组的起始位置 dest: 要存放的数组(目标数组) destPos: 目标数组的起始位置 length: 从原数组复制多少个元素 arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 */ // 复制 5 69 32 21 到数组array int[]array = new int[8]; System.arraycopy(arr,1,array,2,4); for(int i=0;i<array.length;i++){ System.out.println(array[i]); } } } |
- 方式二
copyOf(int[] original, int newLength)
复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
public class ArrayCopy2{ public static void main(String[]args){ int[] arr = {12,5,69,32,21,45,96}; System.out.println("数组arr长度是:"+arr.length); /* copyOf(int[] original, int newLength) 复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。 */ //将arr所有元素复制到array int[] array = Arrays.copyOf(arr,arr.length); for(int i=0;i<array.length;i++){ System.out.println(array[i]); } } } |
- 数组的扩容,数组的扩容实际上是基于数组的复制完成的,所以数组在扩容之后地址会发生改变
package com.baizhi.day07; import java.util.Arrays; /** 数组的扩容 */ public class ArrayDilatation{ public static void main(String[]args){ int[] arr = {12,5,69,32,21,45,96}; System.out.println("数组arr长度是:"+arr.length); //数组arr进行扩容 arr = Arrays.copyOf(arr,arr.length+2); System.out.println("数组arr长度是:"+arr.length); for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } } } |