작성
·
232
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
제가 제대로 이해했는지 답변 부탁드립니다.
Student student1 = new Student();
이부분에서 Student 클래스에 새로운 객체가 생성되고 student1라는 변수에는 생성된 객체가 아닌 객체의 참조값(메모리에 저장된 위치)이 저장된것이 맞나요?
students[0] = student1; 에서는 student1에는 참조값이 들어가있는 상태이고 students[0]에 student1의 참조값이 그냥 대입되는 것이 아니라 복사된 참조값이 대입된다는 것이 맞나요?
결과적으로 김영한님이 주의해야한다는 것이 정확히 무언이지를 모르겠습니다. 12:00의 주의! 변수에는 인스턴스 자체가 들어가있는 것이 아니다! 부분에서 인스턴스가 복사되어 대입되는것 이라고 생각하더라도 문제가 될 것이 있나요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
명석님의 질문과 유사한 내용을 다룬 질문이 이미 인프런의 질문 게시판에 존재합니다. 특히 참조값의 개념과, 참조 변수에 대입되는 것이 인스턴스 자체가 아니라 그 인스턴스의 메모리 주소, 즉 참조값이라는 개념에 대한 이해를 요하는 질문이었습니다. 이와 관련하여 다른 학습자가 제기한 질문과 이에 대한 답변이 도움이 될 것으로 생각됩니다.
객체와 변수의 관계 이해: 첫 번째 질문에서 언급하신 부분은 객체의 생성과 참조 변수의 관계에 대해 올바르게 이해하고 계십니다. 객체는 new
키워드를 사용해 생성되며, 이때 생성된 객체의 메모리 주소(참조값)이 해당하는 참조 변수에 저장됩니다. 간단히 말해, student1
변수는 new Student()
에 의해 생성된 객체를 가리키는 참조값을 저장합니다.
관련 질문: “객체 질문”
참조값의 복사 이해: 두 번째 질문의 경우, 배열에 참조 변수를 대입할 때 이루어지는 과정도 잘 이해하고 계십니다. 참조값이 복사되어 배열의 해당 인덱스에 저장됨으로써 같은 객체를 가리키게 됩니다.
관련 질문: “기본형 참조형 관련 질문”
인스턴스와 변수의 관계 주의: 마지막으로, ‘변수에는 인스턴스 자체가 들어간다’는 잘못된 이해를 경계하는 지적에 대해서는, 참조 변수는 실제 객체를 저장하는 것이 아니라 객체의 메모리 주소를 저장함을 의미합니다. 이를 통해 여러 참조 변수가 동일한 객체를 가리킬 수 있는 것입니다. 이는 객체의 인스턴스가 메모리에서 차지하는 공간을 불필요하게 중복하여 사용하지 않도록 해주며, 효율적인 메모리 관리를 가능하게 합니다.
관련 질문: “참조값 복사에 따른 인스턴스 동일성 질문”
명석님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.