자바 부트캠프를 수강하며 두개의 배열을 연결하는 메소드를 만들어 실행하는 코드를 만들고 있던도중 발견한 오류? 이다.
사실 [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]이라는 값을 얻을 수 있다.
위 이미지에서 위의 두 배열이 그렇게 출력된 것이다!