JooTC
android-logo-card-light-green

[안드로이드/JAVA] 배열의 주소가 아닌 값 전체를 출력하기

배열의 주소가 아닌 값 전체를 출력하기


다음은 JAVA 코드로 생성된 배열입니다.

int[] myArray = new int[5];
myArray[0] = 111;
myArray[1] = 222;
myArray[2] = 333;
myArray[3] = 444;
myArray[4] = 555;

배열의 모든 값(111, 222, 333, 444, 555)로그 메시지로 출력해보기 위해 다음과 같이 사용해보았습니다.

Log.d("TestArray", String.valueOf(myArray));

하지만 위와 같은 코드가 실행되었을 때 Logcat 메시지에 나타나는 실제 값은 다음과 같을 것입니다.

2019-07-05 19:08:39.324 7921-7921/com.company.myapp D/TestArray: [Z@f200598

기대한 값인 111, 222, 333, 444, 555가 아닌 [Z@f200598 과 같이 Array 주소 값이 나타난 것입니다.

Array의 주소 값이 아닌 배열의 값을 출력하기 위해서는 어떻게 해야 할까요?

 

방법은 간단합니다. 코드상의 String.valueOf() 대신 Arrays.toString() 메소드를 사용하면 됩니다. 매개 변수에는 당연히 배열의 변수명이 들어가야 할 것입니다.

Log.d("TestArray", Arrays.toString(myArray));

다시 실행해보도록 하겠습니다. 이제는 원하는 대로 배열의 값들이 출력되고 있습니다.

2019-07-05 19:13:11.437 8109-8109/com.company.myapp D/TestArray: [111, 222, 333, 444, 555]

 

한편, 이러한 케이스는 IDE에서 다음과 같이 경고 메시지로 알려주기도 합니다.

Implicit call to 'toString()' on array 'feedStatus' less... (Ctrl+F1) 
Inspection info: Reports any arrays used in String concatenations or as parameters to java.io.PrintStream methods (such as System.out.println()). Usually in such a case, the contents of the array were meant to be used and not the array object itself.

Android Studio의 경우 Alt+Enter를 사용하여 한 번에 Arrays.toString() 메소드로 변환할 수 있습니다.

이 포스트가 도움이 되었나요?

댓글 남기기

avatar
error: 경고: 무단 콘텐츠 복사 및 사용을 금지하고 있습니다. 이해해주셔서 감사합니다.