해결된 질문
작성
·
372
·
수정됨
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
강의에서(12:00부분) 참조값만 복사하고 인스턴스를 복사하는 것이 아니라는데,
결국 같은 인스턴스를 접근하게 되잖아요
그러면 위 뜻이 인스턴스가 동일해지는 것은 맞지만, 참조값을 복사하는 것이지 인스턴스를 복사하는 것이 아니라서 잘못 인지하지 말라는 뜻인가요?
아니면 인스턴스가 달라서 참조값만 복사한 것이기에 인스턴스를 복사하는 것이 아니라는 뜻인가요?
Data dataA = new Data(); // 1.Data인스턴스 생성후 dataA에 참조값 넣음
dataA.value = 10;
Data dataB = dataA; // 2.dataA 참조값을 복사하고 대입함
System.out.println("dataA.value = " + dataA.value); // 10
System.out.println("dataB.value = " + dataB.value); // 10
// 3.dataB는 dataA의 인스턴스에 동일하게 접근하게됨
답변 2
1
안녕하세요. kyk님, 공식 서포터즈 코즈위버입니다.
A a = new A(); 이 코드가 실행되면
자바는 A의 인스턴스(객체)를 메모리에 생성하고, 그 위치(메모리주소)를 a 라는 변수에 담습니다.
만약 A의 인스턴스가 0x10 에 존재한다면 a 에는 0x10이 담겨 있겠지요? 이 때 a의 값을 복사하면,
A b = a;
a에 있던 0x10의 값을 b에 복사합니다. 결국 a, b 둘 다 0x10 을 갖게 됩니다. 두 변수가 같은 인스턴스를 참조하게 되지요.
여기서 주의해야 할 점은 주소값 복사가 일어난 것이지 인스턴스(객체) 생성이 다시 일어난건 아니라는 것입니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용과 유사한 상황에 대해 다른 수강생이 질문했던 내용이 있어 그 답변을 참고하시면 도움이 될 것 같습니다.
다음 링크의 게시글에서 참조값과 인스턴스의 관계에 대한 설명을 확인하실 수 있습니다.
답변 내 이미지를 참고하신다면 이해에 더욱 도움이 될 것입니다.
감사합니다.
그러면 주소값만 복사한거라서 같은 인스턴스를 참조하게 되지만, A a와 A b의 객체 인스턴스 자체는 서로 다른거죠?