오늘은 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 저장소에서 확인할 수 있습니다.
Source:
https://www.digitalocean.com/community/tutorials/java-string-array-to-string