μλ°μμμ κ°μ²΄ 볡μ¬
μλ§μμ κ°μ²΄λ₯Ό 볡μ¬νλ μ νμλ μμ 볡μ¬μ κΉμ 볡μ¬κ° μλ€.
μμ 볡μ¬
λ¨μν κ°μ²΄μ μ£Όμ κ°λ§μ 볡μ¬νλ κ²μ΄λ€.
λλ¬Έμ μ€μ λ‘λ νλμ μ£Όμ κ°λ§μ κ°μ§κ³ μλ‘ κ°μ κ°μ λ°λμ§ μλλ€.
λλΆλΆ κ°μ²΄λ₯Ό 볡μ¬νλ€λ λ§μ μμ 볡μ¬κ° μλ κΉμ 볡μ¬λ₯Ό μλ―Ένλ€.
Example
public class Array_Shallow_Copy{
public static void main(String[] args) {
int[] arr1 = { 1, 2, 3};
int[] arr2 = arr2;
}
}
=
μ°μ°μλ μ£Όμλ₯Ό μ΄μ΄μ€
μ μλ―Ένλλ°,
μ μμ λ aμ λ°°μ΄μ bλ°°μ΄λ‘ =
μ°μ°μλ₯Ό νμ©νμ¬ λμ
νκΈ° λλ¬Έμ μμ 볡μ¬κ° λλ€.
μ¦ κ°μ μ£Όμκ°μ κ°μ§λ€. (μ°Έμ‘°μ μν 볡μ¬)
λλ¬Έμ arr2μ κ°μ μμ νλ©΄ arr1μ κ°λ κ°μ΄ μμ λλ€.
κΉμ 볡μ¬
κ°μ²΄μ μ€μ κ°μ μλ‘μ΄ κ°μ²΄λ‘ 볡μ¬νλ€.
볡μ¬λ λ°°μ΄μ΄λ μλ³Έ λ°°μ΄μ΄ λ³κ²½λ λ μλ‘ κ°μ κ°μ λ°λμ§ μλλ€.
μλ°μμλ λ°°μ΄μ κΉμ 볡μ¬ν μ μλ μ¬λ¬κ°μ§ λ©μλλ₯Ό μ 곡νκ³ μλ€.
Obejct.clone()
public class Array_Copy_Clone{
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4 };
int[] b = a.clone();
}
}
κ°μ₯ 보νΈμ μΈ λ°©λ²μΌλ‘ κΉμ 볡μ¬λ₯Ό ν λ μ¬μ©λλ€.
But. κ°μ²΄ λ°°μ΄μ κ²½μ° clone()
μ μ¬μ©νλ©΄ κΉμ 볡μ¬κ° λμ§ μλλ€!
κ·Έ μ΄μ λ κ°μ²΄λ μ£Όμκ°μ κ°μ§κ³ μκΈ° λλ¬Έμ΄λ€. (μΌλ° μλ£νμ λ°°μ΄λ§ κΉμ 볡μ¬κ° κ°λ₯νλ€)
λ§μ°¬κ°μ§λ‘ 2μ°¨μ λ°°μ΄μ κ²½μ°λ κ°κ°μ rowμ λν μ£Όμκ°μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ κΉμ 볡μ¬κ° λμ§ μλλ€.
λ ν΄λΉ λ©μλλ κ°μ²΄μ ν΄λ‘λμ μν λ©μλμΈλ°
μΆκ°λ‘ κ°μ²΄ ν΄λ‘λμ κ΄νμ¬ κΈμ μ½μ΄λ³΄λ©΄ μ’λ€.
System.arraycopy()
public class Array_Copy_ArrayCopy{
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4 };
int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);
}
}
System.arraycopy(src, srcPos, dest, destPos, a.length);
νμμΌλ‘ μ¬μ©νλ€.
μΌμ°¨μ κ°μ²΄ λ°°μ΄ λ³΅μ¬νκΈ°
public static Pos[] deepCopy(Pos[] src){
if(src == null) return null;
Pos[] dest = new Pos[src.length];
for(int i=0; i<src.length; i++){
src[i] = new Pos(src[i].a, src[i].b);
}
return dest;
}
for
λ¬Έμ λ λλ§λ€ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ¬ μ§μ κ°μ λ£μ΄μ€λ€.
κ·ΈλμΌ μλ‘μ΄ κ°μ²΄λ₯Ό λ΄μ λ€λ₯Έ λ°°μ΄λ‘ κΉμ 볡μ¬λ λ°°μ΄μ κ°μ§ μ μλ€.