작성
·
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[] 배열이지만 충분히 배열의 각 공간에 기본형 타입 리터럴을 그대로 담느냐, 참조형 타입의 참조값을 담느냐의 차이만 있을 뿐입니다!
해당 부분을 학습하신 뒤에는 본 강의의 섹션 1. 클래스와 데이터 > 배열 도입 - 시작을 복습하시기를 권해드립니다!
특히 두 강의 모두 배열에 대입하는 부분을 주의깊게 봐주십쇼!
감사합니다.
items[itemCount] = item;
이라는 것은 영한님께서 항상 말씀하시는 대원칙을 생각해볼 때 항상 값을 복사해서 대입하는 것입니다. item에 있는 참조값을 복사해서 items[itemCount] 칸에 대입하는 것입니다. 그래서 말씀하신 것처럼 매개변수로 온 item 과 items[itemCount] 는 같은 참조값을 가지고 있고 같은 객체 인스턴스에 접근할 수 있습니다.
해당 부분에 대해서 아리송하다면(혹은 제가 설명한 것이 이상한 것일 수도 있습니다) 잠깐 진도를 멈추고 복습하시는 것을 추천합니다!
감사합니다. items[itemCount] 에 item에 참조값을 주기위해 결국엔 메소드에 매게변수를 만들어줘야하는 건가요
만약 items[itemCount] = item;으로 참조값을 대입시켜 주게되면 결국엔 같은 참조값을 가지고있는 매개변수인 Item itemm에 연결이 되있는거고 또 같은 참조값을 가지고있는 객체 배열인 Item[] items = new Item[10]; 랑도 연결이되있는거고 결국엔 이것들이 Item 클레스랑 연결이되있어서 찾아갈수 있는거라고 이해하면 되는걸까요 제가 정확히 이해한게 맞은걸까요 의심이갑니다.. 혹시 잘못 이해했으면 다시 돌아가겠습니다.