数组的复制

 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]

posted @ 2019-11-08 10:34  冷夜雨花未眠  阅读(142)  评论(0)    收藏  举报