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

조회수 1271회

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; 이라는 조건을 준 이유도 궁금합니다.

고수분들 도와주세요

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 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 변수인 것 같네요.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)