Java/배열

[Java]배열 콘솔에 출력하는 방법

DevStory 2022. 8. 22.

배열 콘솔에 출력하는 방법

Java에서 배열의 값을 확인하기 위해 배열을 직접 출력하거나 toString() 메서드를 사용하여 출력하는 경우 아래와 같은 결과를 볼 수 있습니다.

public static void main(String args[]) {
  String[] strArray = { "AB", "CD"};

  System.out.println("strArray: " + strArray);
  System.out.println("strArray.toString(): " + strArray.toString());
}

[실행 결과]

strArray: [Ljava.lang.String;@42a57993
strArray.toString(): [Ljava.lang.String;@42a57993

배열은 toString() 메서드를 재정의(Overriding)하지 않으므로 최상위 클래스인 Object의 toString() 메서드를 호출합니다.

 

Object 클래스의 toString() 메서드는 (객체의 클래스 이름 + "@" + HashCode를 16진수로 변환한 결과)를 문자열로 반환하므로 toString() 메서드로 배열의 요소를 콘솔에 출력할 수 없습니다.

 

이번 포스팅은 배열의 값을 콘솔에 출력하는 몇 가지 방법을 소개합니다.


방법 1. for문

전통적인 방법인 for문을 사용하여 배열의 값을 출력합니다.

 

다음 예제는 배열의 인덱스를 사용하여 배열의 각 요소를 출력합니다.

public static void main(String args[]) {
  String[] strArray = { "AB", "CD", "EF" };

  for(int index = 0; index < strArray.length; index++) {
    System.out.print(strArray[index] + " ");
  }
}

[실행 결과]

AB CD EF

방법 2. 향상된 for문

Java 1.5 버전에 도입된 향상된 for문을 사용하여 코드를 더 간략하게 작성할 수 있습니다.

 

배열의 인덱스를 사용하지 않고 배열의 각 요소를 접근할 수 있습니다.

 

다음 예제는 향상된 for문을 사용하여 배열의 각 요소를 출력합니다.

public static void main(String args[]) {
  String[] strArray = { "AB", "CD", "EF" };

  for(String strValue : strArray) {
    System.out.print(strValue + " ");
  }
}

[실행 결과]

AB CD EF

방법 3. Arrays 클래스의 asList 메서드

Arrays 클래스의 asList() 메서드를 사용하면, 배열의 각 요소를 접근하지 않아도 값을 출력할 수 있습니다.

 

asList() 메서드는 매개변수로 전달된 배열을 정적 클래스인 ArryList로 변환하여 반환하는데, ArrayList에 toString() 메서드를 재정의하므로 배열의 값을 확인할 수 있습니다.

 

여기서 주의해야하는 점은 asList() 메서드가 반환하는 정적 클래스 ArrayList와 컬렉션에서 제공하는 ArrayList는 서로 다른 클래스입니다.

 

다음 예제는 Arrays 클래스의 asList() 메서드를 사용하여 배열의 요소를 출력합니다.

public static void main(String args[]) {
  String[] strArray = { "AB", "CD", "EF" };

  System.out.println(Arrays.asList(strArray));
}

[실행 결과]

[AB, CD, EF]

방법 4. Arrays 클래스의 toString 메서드

Arrays 클래스의 toString() 메서드에 배열을 전달하여 배열의 요소를 출력할 수 있습니다.

 

asList() 메서드는 배열을 정적 클래스인 ArrayList로 변환하는 작업이 필요한데, toString() 메서드는 변환하는 작업이 없으므로 asList() 메서드보다 빠르게 동작합니다.

public static void main(String args[]) {
  String[] strArray = { "AB", "CD", "EF" };

  System.out.println(Arrays.toString(strArray));
}

[실행 결과]

[AB, CD, EF]

방법 5. Arrays 클래스의 deepToString 메서드

다차원 배열인 경우 Arrays 클래스의 deepToString() 메서드를 사용하여 배열의 요소를 출력할 수 있습니다.

 

다음 예제는 deepToString() 메서드를 사용하여 2차원 배열의 요소를 출력합니다.

public static void main(String args[]) {
  String[][] strArray = {
        {"AA", "AB", "AC"},
        {"BA", "BB", "BC"},
        {"CA", "CB", "CC"}
  };

  System.out.println(Arrays.deepToString(strArray));
}

[실행 결과]

[[AA, AB, AC], [BA, BB, BC], [CA, CB, CC]]
반응형

댓글