關於Java 拷貝數組方法 Arrays.copyOf() 是地址傳遞還是值傳遞
阿新 • • 發佈:2017-05-08
clone images java 地址 tput mage alt 元素 color
基本元素為對象時,淺拷貝,拷貝引用(ArrayList 的clone()調用Arrays.copyof(),官方文檔註明為淺拷貝)
class A{ int a; public A(int a){ this.a=a; } public String toString(){ return a+""; } } A[] kk=newA[2]; kk[0]=new A(1); kk[1]=new A(2); A[] kkk=Arrays.copyOf(kk,2); System.out.println(kk==kkk); System.out.println(kk.equals(kkk)); System.out.println(Arrays.toString(kk)); System.out.println(Arrays.toString(kkk)); kk[0].a=555555; System.out.println(Arrays.toString(kk)); System.out.println(Arrays.toString(kkk));
/*
false
false
[1, 2]
[1, 2]
[555555, 2]
[555555, 2]
為值時,
int[] a=new int[2]; a[0]=11; a[1]=2; int[] b=Arrays.copyOf(a, 2); a[1]=3333333; System.out.println(Arrays.toString(a)); System.out.println(Arrays.toString(b)); /*output [11, 3333333] [11, 2]
關於Java 拷貝數組方法 Arrays.copyOf() 是地址傳遞還是值傳遞