배열복사는 말그대로 배열의 특정값을 다른 배열의 특정자리에 붙여넣기 하는것입니다.
syntax) System.arraycopy(a, 0, b, 0, a.length);
ex)
class A{
public static void main(String args[]){
int[] a = {100,200,300,400};
int[] b = {10,20,30,40};
System.arraycopy(a, 1, b, 2, 1);
-> a의 1번째부터 1개만큼의 값을
b의 2번째에 집어넣음
for(int c : b)
System.out.println(c);
}
}
deepcopy 깊은복사 -> arraycopy를 이용해 주소가 다른 배열을 복사
class A{
static int[] deepcopy(int[] a){
int[] b= new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);// a의 0번째부터 값을 b에 0번쨰부터 a의 길이만큼 복사함
return b;
}
public static void main(String args[]){
int[] a={100,200,300,400,500};
int[] b=deepcopy(a);
for(int c:b){
System.out.println(c+",");
}
System.out.println(a);
System.out.println(b);
}
}
출력
100,
200,
300,
400,
500,
[I@15db9742 -> 배열의 주소값이 완전달라짐
[I@6d06d69c
shallowcopy 얕은복사 -> 같은 배열을 리턴(주소가 같음)
class A{
static int[] sallowcopy(int[] a){
return a;
}
public static void main(String args[]){
int[] a={100,200,300,400,500};
int[] b=sallowcopy(a);
for(int c:b){
System.out.println(c+",");
}
System.out.println(a);
System.out.println(b);
}
}
출력
100,
200,
300,
400,
500,
[I@15db9742 --> 주소값이 같음
[I@15db9742
오라클 view의 사용이유와 데이터의 변경 권한 (0) | 2014.12.31 |
---|---|
오라클 sequence 의 사용이유와 주의점 (0) | 2014.12.30 |
오라클 추가 필기 JOIN , 제약조건 , 트랜잭션의 특징 2014년 12월29일 (0) | 2014.12.29 |
이클립스 자바 파일 이름변경 하는 방법 (0) | 2014.12.23 |
오라클 개인공부 필기 141220 기준 (0) | 2014.12.20 |