Java에서 String과 new String 복사에 대해서 의문점입니다.
글쓴이: cansee5744 / 작성시간: 월, 2020/04/06 - 6:17오후
1번
String a = new String();
String b = a;
String c = a;
2번
String a = new String();
String b = new String();
a = "test"; 총 메모리 3
b = "test2" 총 메모리 4
b = a;
이렇게 있을 때, 1번은 주소복사, 2번은 값복사로 이해를 하고 있습니다.
그런데
3번
String a = "1";
String b = new String();
b = a;
String c = a;
a = "test"
이렇게 두고 a, b, c를 출력하면 결과로
a = test
b = 1;
c = 1;
이렇게 나옵니다.
b = a 를 했을 때, 주소복사가 되고 String c = a; 했을 때, 값복사가 된다고 이해를 하고 있는데,
(제가 이해를 하고 있는게 잘못되었다고 생각합니다.)
얕은 복사, 깊은 복사를 찾아서 이해를 해도 잘 되지 않아서 질문드립니다.
String과 new String의 관계와 더불어 a, b, c 결과 같이 위와 같이 나오는 점이 궁금합니다.
Forums:
2번이 값 복사가 아니구요. 3번만 간단히 보면
2번이 값 복사가 아니구요. 3번만 간단히 보면 되는데,
a = "1";
b = a;
a = "test"
a = "test"를 하면 "1"인 스트링 a를 "test"로 바꾸는 게 아니라, "1"이라는 스트링을 가리켰던 a라는 이름이 "test"라는 스트링을 가리키게 바뀌는 것입니다. 그래서 이전에 b = a를 했을 때 b는 "1"을 가리키고 나중에 a가 다른 걸 가리키게 바뀌더라도 b는 바뀌지 않는 거죠.
댓글 달기