인프런 커뮤니티 질문&답변

구준모님의 프로필 이미지
구준모

작성한 질문수

김영한의 실전 자바 - 기본편

문제와 풀이

문제 2번 질문

작성

·

371

·

수정됨

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)


3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

문제 2번에 public void addItem(Item item) << Item item이 메서드의 매개변수인가요? 객체 배열에 참조값을 가져온건가요? if문 리턴끝나고 나오는 items[itemCount] 이거는 0번째 배열부터 1개씩 증가하는건 이해했는데 items[itemCount] = item; 에서 이해가 잘안가요 item은 왜 대입시키는건가요 참조값을 주기위해서인가요? 객체배열과 연결하기위해 참조값을 주는건가요? 제가 이해력이좀 낮아서

답변 1

1

안녕하세요. 구준모님, 공식 서포터즈 y2gcoder입니다.

문제 2번에 public void addItem(Item item) << Item item이 메서드의 매개변수인가요?

맞습니다. item에 Item 인스턴스의 참조값이 담겨있습니다!

객체 배열에 참조값을 가져온건가요? if문 리턴끝나고 나오는 items[itemCount] 이거는 0번째 배열부터 1개씩 증가하는건 이해했는데 items[itemCount] = item; 에서 이해가 잘안가요 item은 왜 대입시키는건가요 참조값을 주기위해서인가요?

이 부분은 Item[] items 라는 배열에서 items[itemCount] = item; 을 하면 매개변수로 가져온 item(x001의 참조값)를 items 배열의 itemCount 라는 순서의 공간에 담기 위한 작업입니다. 이 부분에 대해서는 영한님의 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 강의의 섹션 8. 배열 > 배열의 선언과 생성 강의를 복습하시길 권해드립니다! 해당 부분에서는 int[] 배열이지만 충분히 배열의 각 공간에 기본형 타입 리터럴을 그대로 담느냐, 참조형 타입의 참조값을 담느냐의 차이만 있을 뿐입니다!

image

해당 부분을 학습하신 뒤에는 본 강의의 섹션 1. 클래스와 데이터 > 배열 도입 - 시작을 복습하시기를 권해드립니다!

image

특히 두 강의 모두 배열에 대입하는 부분을 주의깊게 봐주십쇼!

 

 

감사합니다.

구준모님의 프로필 이미지
구준모
질문자

감사합니다. items[itemCount] 에 item에 참조값을 주기위해 결국엔 메소드에 매게변수를 만들어줘야하는 건가요

만약 items[itemCount] = item;으로 참조값을 대입시켜 주게되면 결국엔 같은 참조값을 가지고있는 매개변수인 Item itemm에 연결이 되있는거고 또 같은 참조값을 가지고있는 객체 배열인 Item[] items = new Item[10]; 랑도 연결이되있는거고 결국엔 이것들이 Item 클레스랑 연결이되있어서 찾아갈수 있는거라고 이해하면 되는걸까요 제가 정확히 이해한게 맞은걸까요 의심이갑니다.. 혹시 잘못 이해했으면 다시 돌아가겠습니다.

items[itemCount] = item;

이라는 것은 영한님께서 항상 말씀하시는 대원칙을 생각해볼 때 항상 값을 복사해서 대입하는 것입니다. item에 있는 참조값을 복사해서 items[itemCount] 칸에 대입하는 것입니다. 그래서 말씀하신 것처럼 매개변수로 온 item 과 items[itemCount] 는 같은 참조값을 가지고 있고 같은 객체 인스턴스에 접근할 수 있습니다.

해당 부분에 대해서 아리송하다면(혹은 제가 설명한 것이 이상한 것일 수도 있습니다) 잠깐 진도를 멈추고 복습하시는 것을 추천합니다!

구준모님의 프로필 이미지
구준모
질문자

설명 너무 감사합니다

구준모님의 프로필 이미지
구준모

작성한 질문수

질문하기