반응형
<초깃값>
형 | 초깃값 |
byte | (byte) 0 |
short | (short) 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | '\u0000' |
boolean | false |
reference 형 ex) String | "" 또는 null |
배열 복제 코드
import java.util.Arrays;
public class Chap_02_exercise_2_3 {
public static void main(String[] args) {
int [] a = {1, 2, 3, 4, 5};
int [] b = a;
int [] c;
System.out.println("-------------- a = b --------------");
System.out.println("a: " + Arrays.toString(a));
System.out.println("b: " + Arrays.toString(b));
System.out.println();
b[3] = 0;
System.out.println("-------------- b[3] = 0 --------------");
System.out.println("a: " + Arrays.toString(a));
System.out.println("b: " + Arrays.toString(b));
System.out.println();
c = a.clone();
System.out.println("-------------- c = a.clone() --------------");
System.out.println("a: " + Arrays.toString(a));
System.out.println("c: " + Arrays.toString(c));
System.out.println();
c[3] = 4;
System.out.println("-------------- c[3] = 4 --------------");
System.out.println("a: " + Arrays.toString(a));
System.out.println("c: " + Arrays.toString(c));
System.out.println();
}
}
출력
a = b를 한 경우 a가 가리키는 주소를 그대로 b도 똑같이 가리킨다. 그래서 b[3] = 0을 했을때, a와 b가 가리키고 있는 곳이 같아서 a[3]도 똑같이 0으로 출력된다.
c = a.clone()을 통해 c에 a를 복제해서 넣어주면 a = b와 같은 값으로 출력된다. 하지만 clone() 함수의 경우 복제된 데이터는 내부적으로 서로 다른 메모리 주소를 사용하고 대신 같은 크기의 같은 주소를 가리키는 데이터가 들어있는 새로운 데이터를 만들어주는 함수이므로 c[3] = 4를 해도 a[3]에는 변화가 없다.
'Algorithm > Do it 자료구조와 함께 배우는 알고리즘 입문' 카테고리의 다른 글
[Algorithm] Chapter02 연습문제 Q1~Q7 (0) | 2021.03.31 |
---|---|
[Algorithm] Chapter01 연습문제 Q12 ~ Q17 (0) | 2021.03.30 |
[Algorithm] 논리합, 논리곱, 드모르간 법칙 (0) | 2021.03.30 |
[Algorithm] Chapter01 연습문제 Q4 ~ Q5 p22 (0) | 2021.03.27 |
[Algorithm] Chapter01 연습문제 Q1 ~ Q3 (0) | 2021.03.27 |