출처 : https://www.freecodecamp.org/news/java-array-methods-how-to-print-an-array-in-java/
일반적인 배열의 값 출력
배열은 그들의 요소 값을 연속적인 메모리 위치에 저장하고 있습니다.
int[] intArray = {2,5,46,12,34};
System.out.println(intArray);
// 결과물 : [I@74a14482
그래서 위와 같이 출력 해보면 결과물로 해당 보여 줍니다.
좀 더 설명해 보면 println 으로 출력되는 것은 기본적으로 Object.toString() 메소드의 값을 출력 하는 것이고 구성을 살펴보면
getClass().getName()+‘@’+Integer.toHexString(hashCode())
좀 더 쉽게 이야기 해보면 대상 클래스 개체의 해쉬 코드값의 일부를 출력하는 것 입니다.
미리 보기
배열의 개체 요소 값 출력 방법
- 반복문 : for 또는 for-each 활용
- Arrays.toString()
- Arrays.deepToString()
- Arrays.asList()
- Java Iterator(반복자) interface(인터페이스)
- Java Stream(흐름,이어지는 연속적인) API
for / for-each
int[] intArray = {2,5,46,12,34};
for(int i=0; i<intArray.length; i++){
System.out.print(intArray[i]);
// 결과물 : 25461234
}
for(int i: intArray){
System.out.print(i);
// 결과물 : 25461234
}
Arrays.toString()
java.util 패키지에 포함된 기능 입니다. 1차원 배열의 값이 출력된 형태로 볼 수 있습니다.
int[] intArray = {2,5,46,12,34};
System.out.println(Arrays.toString(intArray));
// 결과물 : [2, 5, 46, 12, 34]
Arrays.deepToString()
1차원 이상의 배열은 Arrays.deepToString() 메소드를 사용하여 내부 값을 출력하도록 합니다.
// 다차원 배열 생성
int[][] multiDimensionalArr = { {2,3}, {5,9} };
System.out.println(Arrays.toString(multiDimensionalArr));
// 결과물 : [[I@74a14482, [I@1540e19d]
System.out.println(Arrays.deepToString(multiDimensionalArr));
// 결과물 : [[2, 3], [5, 9]]
참고로 1차원 배열 또한 Arrays.deepToString() 메소드를 사용해도 됩니다.
Integer[] oneDimensionalArr = {1,4,7};
System.out.println(Arrays.deepToString(oneDimensionalArr));
// 결과물 : [1, 4, 7]
``
# Arrays.asList()
> 이 메소드는 지정된 배열이 지원하는 고정 크기의 목록을 리턴합니다.
자바에서 Arrays.asList(intArray).toString() 를 호출 하는 것은,내부적으로 목록 내 요소 유형의 toString () 메소드를 사용합니다.
Teacher[] teacher = { new Teacher("John"), new Teacher("Mary") };
System.out.println(Arrays.asList(teacher));
// 결과물 : [Teacher{name='John'}, Teacher{name='Mary'}]
# 자바 반복자(Iterator) 인터페이스
Integer[] intArray = {2,5,46,12,34};
// 정수 목록 생성
List< Integer > list = Arrays.asList(intArray);
// 정수 목록의 반복자를 생성
Iterator< Integer > it = list.iterator();
// List에 반복 할 요소가있는 경우
while(it.hasNext()) {
System.out.print(it.next());
// 결과물 : 25461234
}
# 자바 Stream API
> Stream API는 객체 컬렉션을 처리하는 데 사용됩니다. 스트림은 일련의 객체입니다. 스트림은 원래 데이터 구조를 변경하지 않으며 요청 된 작업에 따른 결과 만 제공합니다.
Integer[] intArray = {2,5,46,12,34};
Arrays.stream(intArray).forEach(System.out::print);
// 결과물 : 25461234
# 맺음말
저같은 경우에는 apache commons lang3 의 ToStringBuilder.reflectionToString() 메소드를 자주 사용하는데 위 내용을 참조하여 기본 패키지에서 뭔가 해보는 것도 좋을거 같다는 생각이 드네요 :)
항상 기본기가 중요하죠 ㅋ
오늘도 누군가에게 도움이 되길 바랍니다.