[java] 객체 배열 개념이 헷갈립니다.

조회수 660회

다음 코드에 대해 설명하는 문항 중 틀린 것은?

[ Book[] book = new Book[10]; ]

  1. book은 배열에 대한 레퍼런스이다.

  2. Book 객체가 10개 만들어진다.

  3. for(int i=0; i<book.size; i++) book[i] = new Book();로 객체들을 만들어야 비로소 배열이 완성된다.

  4. book[0], book[1], ... , book[9] 모두 Book 객체에 대한 레퍼런스이다.

위 문제를 푸는 중인데 저는 정답이 2번이라고 생각했습니다. Book[] book = new Book[10]; 이 코드 한줄로는 Book 객체를 담을 레퍼런스 변수만 10개 생성된다고 생각하여 Book객체 10개가 생성된다가 틀린 문장으로 정답이라고 생각했는데 정답이 4번이라고 하는 군요

하지만 4번은 book[0] ... 등은 Book 객체 주소를 담고 있는 레펀런스 변수이니깐 맞는 표현아닌가요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    해당 테스트는 베열공간만 할당한 것이지 실제 객체가 생성된 것은 아니라는 것을 아는지 묻는 것 같습니다.

    당연히 book 객체를 생성하지 않았으므로 배열요소들에는 book 객체의 레퍼런스값이 아닙니다 즉 new Book() 을 통해 객체가 heap 에 생성되고 그 heap 주소를 배열에 대입해야 배열의 요소들에 Book 객체의 레퍼런스가 할당됩니다.

    그러나 2번도 틀렸습니다.

    Book 객체의 레퍼런스를 저장할 10개의 공간이 만들어진다.

    라고 해야 명확할 듯 싶네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)