자바에서 배열과 레퍼런스 변수와 오브젝트에 관한 질문
조회수 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 변수인 것 같네요.
댓글 입력