数组的复制
1 package Number; 2 3 import java.util.Arrays; 4 5 /** 6 * 数组的复制 7 * Arrays.copyOf(arr,newlength) 8 * Arrays.copyOfRange(arr,formIndex,toIndex)复制一个子数组 9 * @author 冷夜雨花未眠 E-mail:787831425@qq.com 10 * 11 */ 12 public class ArrayDemo7 { 13 public static void main(String[] args) { 14 int a[]=new int[]{112,51,15,849,54,2}; 15 int b[]=a; 16 /*上面不是一个复制数组的方法,只是让他们指向同一个常量区, 17 * 当改动b的元素值时,常量区会发生同步改变,导致a也会出现变化*/ 18 for(int c:b){ 19 System.out.print("["+c+"]"); 20 } 21 System.out.println(); 22 b[0]=23; 23 System.out.println("当改变数组b的第一个元素为23后,a的第一个元素变为:"+a[0]); 24 //此时数组a为:[23][51][15][849][54][2] 25 //用copyOf方法,可以尝试第二个参数大于(多出的默认用0填充)或者小于6(复制了部分数组) 26 int d[]=Arrays.copyOf(a, 6); 27 for(int e:d){//遍历 28 System.out.print("["+e+"]");//输出 29 } 30 System.out.println(); 31 d[0]=48; 32 System.out.println("当改变数组d的第一个元素为48后,a的第一个元素变为:"+a[0]); 33 //复制一个子数组 34 int f[]=Arrays.copyOfRange(a, 2,5); 35 /*从a中复制一个下标2-5的子数组,包左不包右! 36 但是,不能使用这个方法拷贝到一个数组的最后一位, 37 会出现数组越界的问题*/ 38 for(int g:f){//遍历 39 System.out.print("["+g+"]");//输出 40 } 41 } 42 } 43
输出结果:
[112][51][15][849][54][2]
当改变数组b的第一个元素为23后,a的第一个元素变为:23
[23][51][15][849][54][2]
当改变数组d的第一个元素为48后,a的第一个元素变为:23
[15][849][54]
浙公网安备 33010602011771号