Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 문자열 배열을 하나의 문자열로 합치는 방법 총정리

Java 프로그래밍에서 여러 개의 문자열이 담긴 배열(String 배열)을 하나의 단일 문자열로 결합해야 하는 경우가 자주 있습니다. 예를 들어 사용자에게 문장을 출력하거나, 로그를 생성하거나, 데이터를 조립할 때가 그렇습니다. 이 글에서는 StringBuffer, Arrays.toString(), StringJoiner 세 가지 대표적인 방법과 함께 실전에서 가장 많이 쓰이는 String.join()까지 소개합니다.

1. StringBuffer 사용하기

StringBuffer는 문자열을 반복적으로 연결할 때 효율적인 가변(mutable) 문자열 클래스입니다. 반복문 안에서 문자열을 이어 붙일 때 String의 '+' 연산보다 성능이 좋습니다.

  • 빈 StringBuffer 객체를 생성합니다.

  • 반복문(for 루프)으로 String 배열의 요소를 하나씩 순회합니다.

  • 루프 안에서 append() 메서드를 사용해 각 요소를 StringBuffer에 추가합니다.

  • 마지막으로 toString() 메서드를 호출해 StringBuffer를 String 객체로 변환합니다.

예제 코드

public class ArrayOfStrings {
    public static void main(String args[]) {
        String stringArray[] = {"Hello ", "how", "are", "you", "welcome", "to", "Tutorialspoint"};
        StringBuffer sb = new StringBuffer();
        for(int i = 0; i < stringArray.length; i++) {
            sb.append(stringArray[i]);
            if(i < stringArray.length - 1) {
                sb.append(" ");
            }
        }
        String str = sb.toString();
        System.out.println(str);
    }
}

실행 결과

Hello how are you welcome to Tutorialspoint

참고로 Java 5 이상에서는 스레드 동기화가 필요 없는 상황이라면 StringBuffer 대신 더 가벼운 StringBuilder를 사용하는 것이 일반적입니다.

2. Arrays 클래스의 toString() 메서드 사용하기

java.util.Arrays 클래스의 toString() 메서드는 배열 전체를 사람이 읽기 좋은 형태의 문자열로 반환합니다. 다만 주의할 점이 있습니다. 이 메서드는 배열 요소를 단순히 이어 붙이는 것이 아니라 [요소1, 요소2, 요소3]처럼 대괄호와 쉼표가 포함된 배열 표현 형식으로 출력한다는 점입니다.

예제 코드

import java.util.Arrays;
public class ArrayOfStrings {
    public static void main(String args[]) {
        String stringArray[] = {"Hello", "how", "are", "you", "welcome", "to", "Tutorialspoint"};
        String str = Arrays.toString(stringArray);
        System.out.println(str);
    }
}

실행 결과

[Hello, how, are, you, welcome, to, Tutorialspoint]

따라서 배열 내용을 디버깅하거나 확인 용도로 출력할 때는 유용하지만, 깔끔한 하나의 문장이 필요하다면 아래의 StringJoiner나 String.join() 방법이 더 적합합니다.

3. StringJoiner 클래스 사용하기 (Java 8 이상)

Java 8부터 도입된 StringJoiner 클래스를 사용하면 원하는 구분자(delimiter)로 구분된 문자열 시퀀스를 손쉽게 만들 수 있습니다.

  • add() 메서드는 CharSequence 객체(String, StringBuffer, StringBuilder 등)를 인자로 받아 Joiner에 추가하며, 생성 시 지정한 구분자로 앞뒤 요소를 연결합니다.

  • toString() 메서드는 현재 StringJoiner에 담긴 내용을 String 객체로 반환합니다.

StringJoiner로 String 배열을 하나의 문자열로 변환하는 절차는 다음과 같습니다.

  • StringJoiner 객체를 생성합니다(구분자 지정 가능).

  • 반복문으로 String 배열을 순회합니다.

  • 루프 안에서 각 요소를 add() 메서드로 StringJoiner에 추가합니다.

  • toString() 메서드로 최종 문자열을 얻습니다.

예제 코드

import java.util.StringJoiner;
public class ArrayOfStrings {
    public static void main(String args[]) {
        String stringArray[] = {"Hello", "how", "are", "you", "welcome", "to", "Tutorialspoint"};
        StringJoiner joiner = new StringJoiner(" ");
        for(int i = 0; i < stringArray.length; i++) {
            joiner.add(stringArray[i]);
        }
        String str = joiner.toString();
        System.out.println(str);
    }
}

실행 결과

Hello how are you welcome to Tutorialspoint

4. 보너스: String.join()으로 한 줄 처리하기

Java 8 이상에서는 위 과정을 String.join() 정적 메서드 한 줄로 대체할 수 있어 가장 간결한 방법으로 꼽힙니다.

예제 코드

public class ArrayOfStrings {
    public static void main(String args[]) {
        String stringArray[] = {"Hello", "how", "are", "you", "welcome", "to", "Tutorialspoint"};
        String str = String.join(" ", stringArray);
        System.out.println(str);
    }
}

실행 결과

Hello how are you welcome to Tutorialspoint

정리

세부 제어나 복잡한 조건이 필요하다면 StringBuilder/StringBuffer, 배열 내용을 점검·디버깅할 때는 Arrays.toString(), 구분자 기반 결합에는 StringJoiner 또는 String.join()을 사용하는 것이 좋습니다. 상황에 맞는 도구를 선택하면 코드의 가독성과 성능을 모두 챙길 수 있습니다.