[개발] 자바에서 배열에 값을 출력하는 방법

in mini.topia4 years ago

출처 : 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())

좀 더 쉽게 이야기 해보면 대상 클래스 개체의 해쉬 코드값의 일부를 출력하는 것 입니다.

미리 보기

배열의 개체 요소 값 출력 방법

  1. 반복문 : for 또는 for-each 활용
  2. Arrays.toString()
  3. Arrays.deepToString()
  4. Arrays.asList()
  5. Java Iterator(반복자) interface(인터페이스)
  6. 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() 메소드를 자주 사용하는데 위 내용을 참조하여 기본 패키지에서 뭔가 해보는 것도 좋을거 같다는 생각이 드네요 :) 

항상 기본기가 중요하죠 ㅋ

오늘도 누군가에게 도움이 되길 바랍니다.