1. shallowCopy
public static int [] shallowCopy(int arr[])
return arr;
얉은 복사를 의미하고 배열이나 객체를 복사할 때 단순히 참조만 복사하는것으로써 원본이 변경되면 복사본도 같이 변경된다.
2. deep copy
public static int [] deepCopjy(int arr[]){
if (arr == null)
return null;
int result[] = new int[arr.length];
System.arraycopy(arr, 0 , result, 0, arr.length);
return result;
}
ex)
package javas;
public class javas {
public static void main(String args[]) {
int temp[] = { 1, 2, 3, 4, 5, 6 };
int shallow[] = shallowCopy(temp);
int deep[] = deepCopy(temp);
System.out.println("original : " + toString(temp));
System.out.println("shallow Copy : " + toString(shallow));
System.out.println("deep Copy : " + toString(deep));
System.out.println();
temp[0] = 19;
System.out.println("original : " + toString(temp));
System.out.println("shallow Copy : " + toString(shallow));
System.out.println("deep Copy : " + toString(deep));
System.out.println();
}
public static int[] shallowCopy(int arr[]) {
return arr;
}
public static int[] deepCopy(int arr[]) {
if (arr == null)
return null;
int result[] = new int[arr.length];
System.arraycopy(arr, 0, result, 0, arr.length);
return result;
}
public static String toString(int temp[]) {
StringBuffer sb = new StringBuffer("[");
for (int i = 0; i < temp.length; i++)
sb.append(" " + temp[i]);
sb.append(" " + "]");
return sb.toString();
}
}
'JAVA > JAVA 관련' 카테고리의 다른 글
java 객체 비교를 위한 equals 예제 (0) | 2016.12.22 |
---|---|
java 문자열 형변환 (0) | 2016.12.22 |
java iterator 간단 사용법 (0) | 2016.12.22 |
java HashSet 설명 및 예제 (0) | 2016.12.22 |
Comparable vs Comparator (0) | 2016.12.22 |