Java String 배열을 String으로 변환

오늘은 Java String 배열을 String으로 변환하는 방법에 대해 살펴보겠습니다. 때로는 특정 요구 사항을 위해 String 배열을 String으로 변환해야 할 때가 있습니다. 예를 들어 배열 내용을 기록하거나 String 배열의 값을 String으로 변환하고 다른 메서드를 호출해야 할 수 있습니다.

Java String 배열을 String으로 변환

대부분의 경우 객체의 toString() 메서드를 호출하여 문자열 표현을 얻습니다. 자바에서 String 배열에서 toString() 메서드를 호출할 때 어떤 일이 일어나는지 살펴보겠습니다.

package com.journaldev.util;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] {"1","2","3"};
		
		String str = strArr.toString();
		
		System.out.println("Java String array to String = "+str);
	}

}

아래 이미지는 위 프로그램에서 생성된 출력을 보여줍니다. 위 출력의 이유는 배열에 대한 toString() 호출이 Object 슈퍼클래스로 이동되어 아래와 같이 구현되기 때문입니다.

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

Java String 배열을 String으로 변환 예제

자바에서 String 배열을 String으로 변환하는 방법은 어떻게 할까요. 우리는 Arrays.toString 메소드를 사용할 수 있습니다. 이 메소드는 각 요소에 대해 toString() 메소드를 호출하고, StringBuilder를 사용하여 String을 생성합니다.

public static String toString(Object[] a) {
    if (a == null)
        return "null";

    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(String.valueOf(a[i]));
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}

또한, 특정한 형식 요구사항이 있는 경우 String 배열을 String으로 변환하기 위해 자체 메소드를 작성할 수도 있습니다. 아래는 이러한 방법들을 보여주는 간단한 프로그램과 출력 결과입니다.

package com.journaldev.util;

import java.util.Arrays;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] { "1", "2", "3" };

		String str = Arrays.toString(strArr);
		System.out.println("Java String array to String = " + str);

		str = convertStringArrayToString(strArr, ",");
		System.out.println("Convert Java String array to String = " + str);

	}

	private static String convertStringArrayToString(String[] strArr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (String str : strArr)
			sb.append(str).append(delimiter);
		return sb.substring(0, sb.length() - 1);
	}
}

따라서 배열의 toString() 메소드를 사용하면 쓸모없는 데이터가 반환됩니다. Java Arrays 클래스는 toString(Object[] objArr) 메소드를 제공하는데, 이 메소드는 배열의 요소를 반복하고, 요소들의 toString() 구현을 사용하여 배열의 문자열 표현을 반환합니다. 따라서 이 함수를 사용하면 배열의 내용이 출력되며, 로깅 목적으로 사용할 수 있습니다. 특정한 구분자로 String 배열의 모든 요소를 결합하려면 convertStringArrayToString(String[] strArr, String delimiter) 메소드를 사용하여 결합된 String을 반환할 수 있습니다.

자바 배열을 String으로 변환하는 예제

이제 우리의 문자열 배열을 다른 사용자 정의 클래스와 함께 사용하는 예제를 확장해 봅시다. 여기 구현입니다.

package com.journaldev.util;

import java.util.Arrays;

public class JavaArrayToString {

	public static void main(String[] args) {
		A[] arr = { new A("1"), new A("2"), new A("3") };

		// 기본 toString() 메서드
		System.out.println(arr.toString());

		// Arrays.toString()을 사용하여 객체 배열 내용을 인쇄합니다
		System.out.println(Arrays.toString(arr));

		// 객체 배열을 문자열로 변환
		System.out.println(convertObjectArrayToString(arr, ","));
	}

	private static String convertObjectArrayToString(Object[] arr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (Object obj : arr)
			sb.append(obj.toString()).append(delimiter);
		return sb.substring(0, sb.length() - 1);

	}

}

class A {
	private String name;

	public A(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		System.out.println("A toString() method called!!");
		return this.name;
	}
}

위의 Java 배열을 문자열로 변환하는 예제 프로그램에서 생성된 출력은 다음과 같습니다.

[Lcom.journaldev.util.A;@7852e922
A toString() method called!!
A toString() method called!!
A toString() method called!!
[1, 2, 3]
A toString() method called!!
A toString() method called!!
A toString() method called!!
1,2,3

그래서 우리는 Java 문자열 배열을 문자열로 변환하는 방법과 이를 사용하여 사용자 정의 객체와 함께 확장했습니다. 이것으로 Java 배열을 문자열로 변환하는 것에 대해 모두 배웠습니다.

더 많은 핵심 Java 예제는 저희의 GitHub 저장소에서 확인할 수 있습니다.

참조: Java Arrays toString API 문서

Source:
https://www.digitalocean.com/community/tutorials/java-string-array-to-string