[JAVA] [I@7ad041f3 - Hash값

LeeJunO·2023년 6월 27일
0

JAVA Errors

목록 보기
2/3

자바 부트캠프를 수강하며 두개의 배열을 연결하는 메소드를 만들어 실행하는 코드를 만들고 있던도중 발견한 오류? 이다.

사실 [I@7ad041f3 이 값은 오류가 아닌 Hash 값이었다.

자바에서 Hash값이란 배열과 같은 참조형 변수를 가리키는 참조값(레퍼런스값)인데 내가 배열을 출력할 때

int[] a3 = ArrayUtil.concat(new int [] {1,2,3,4}, new int [] {5,6,7,8});
		System.out.println(a3);

이렇게 배열의 참조값을 저장한 변수 a3을 바로 출력하려 했기 때문에 나타난 오류아닌 오류이다.

int a = 10 이라고 할 때
기본 데이터 변수인 a에는 그대로 10의 값이 저장되어 JVM의 stack에 보관되기 때문에 a값 10을 바로 출력할 수 있다.
하지만
int[] a = new int[] {10} 처럼
배열(객체)를 참조하는 값을 저장하는 참조형 데이터는 변수 a에 배열의 값이 저장되어 JVM의 stcak에 보관되는 것이 아니라 배열(객체)의 참조값(레퍼런스값)을 저장하고 있어 a를 출력하면 위의 이미지 처럼 우리가 알 수 없는 값을 출력한다.

이러한 문제의 해결을 위해서는 Arrays.toString() 메소드를 사용할 수 있다.

Arrays.toString()메소드는 배열의 요소들을 문자열로 변환하여 반환해 주기 때문에

Arrays.toString(a)

이런식으로 사용하면 [10]이라는 값을 얻을 수 있다.
위 이미지에서 위의 두 배열이 그렇게 출력된 것이다!

0개의 댓글