자바에서 배열과 레퍼런스 변수와 오브젝트에 관한 질문


public class HeapQuiz {

int id = 0;

 public static void main(String []args) {

 int x =0;
 HeapQuiz [] hq = new HeapQuiz[5];
 while(x <3) {
     hq[x] = new HeapQuiz();
     hq[x].id =x;
     x = x +1;

 }
 hq[3] = hq[1];
 hq[4] = hq[1];
 hq[3] = null;
 hq[4] = hq[0];
 hq[0] = hq[3];
 hq[3] = hq[2];
 hq[2] = hq[0];

 System.out.println(hq[3]);   }

}

위와 같은 코드가 있는 상황에서

reference variable 과 HeapQuiz object를 연결하라는 문제가 있습니다.

reference variable는

hq[0]

hq[1]

hq[2]

hq[3]

hq[4]

가 있고

HeapQuiz에는

id = 0

id = 1

id =2

가 있습니다.

둘을 어떻게 연결시켜야 할지 몰라서 질문드립니다.

int id =0; 이라는 조건을 준 이유도 궁금합니다.

고수분들 도와주세요


조회수 78


1 답변


좋아요
0
싫어요
채택취소하기

HeapQuiz[] hq 에서

while문 내부에서 생성되는 HeapQuiz 객체는 아래와 같이 정의됩니다.

  • HeapQuiz-0 : id=0
  • HeapQuiz-1 : id=1
  • HeapQuiz-2 : id=2

이하 H0, H1, H2로 하겠습니다.

[H0] [H1] [H2] [*] [*]

while문을 돌고 난 후에는 위와 같은 상태가 될 것이고요. (*는 null을 의미합니다.)

  • hq[3] = hq[1]; => [H0] [H1] [H2] [H1] [*]
  • hq[4] = hq[1]; => [H0] [H1] [H2] [H1] [H1]
  • hq[3] = null; => [H0] [H1] [H2] [*] [H1]
  • hq[4] = hq[0]; => [H0] [H1] [H2] [*] [H0]
  • hq[0] = hq[3]; => [*] [H1] [H2] [*] [H1]
  • hq[3] = hq[2]; => [*] [H1] [H2] [H2] [H1]
  • hq[2] = hq[0]; => [*] [H1] [*] [*] [H1]

각 코드별 hq 배열은 위처럼 됩니다. 마지막 line인 hq[3]의 경우는 null이기 때문에 exception이 발생하겠네요.

int id = 0; 의 경우는 HeapQuiz 객체에 대한 id를 저장하기 위한 변수로써 member 변수인 것 같네요.

  • 2017년 10월 13일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close