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

Java에서 문자열의 각 문자를 반복 처리하는 방법

이 글에서는 Java에서 문자열(String)의 각 문자를 하나씩 반복하여 접근하고 출력하는 방법을 알아보겠습니다.

먼저 기본 개념부터 짚고 넘어가겠습니다. String은 하나 이상의 문자를 포함하며 큰따옴표(" ")로 감싸서 표현하는 자료형입니다. 반면 char는 알파벳, 숫자 또는 특수 문자와 같은 단일 문자를 저장하는 자료형입니다. 문자열을 구성하는 각 문자에 개별적으로 접근하려면 이 두 자료형의 특성을 이해하는 것이 중요합니다.

동작 예시

입력값과 기대되는 출력값은 다음과 같습니다.

입력:

정의된 문자열: Java Program

출력:

문자열에 포함된 문자들:
J, a, v, a, , P, r, o, g, r, a, m,

알고리즘

Step 1 - 시작
Step 2 - 문자열 변수(input_string)와 char 변수(temp)를 선언한다.
Step 3 - 값을 정의한다.
Step 4 - 문자열을 반복하며, 인덱스 'i'에 해당하는 각 문자를 공백과 함께 출력한다.
Step 5 - 결과를 화면에 표시한다.
Step 6 - 종료한다.

방법 1: for 루프 사용

가장 전통적인 방식은 for 루프와 charAt() 메서드를 조합하는 것입니다. 인덱스를 직접 제어할 수 있어 특정 범위의 문자만 처리해야 할 때 유용합니다.

public class Characters {
    public static void main(String[] args) {
        String input_string = "Java Program";
        System.out.println("정의된 문자열: " + input_string);
        System.out.println("문자열에 포함된 문자들:");
        for(int i = 0; i < input_string.length(); i++) {
            char temp = input_string.charAt(i);
            System.out.print(temp + ", ");
        }
    }
}

실행 결과

정의된 문자열: Java Program
문자열에 포함된 문자들:
J, a, v, a, , P, r, o, g, r, a, m,

방법 2: for-each 루프 사용

Java 5부터 도입된 향상된 for 문(for-each)을 활용하면 코드가 더욱 간결해집니다. toCharArray() 메서드로 문자열을 char 배열로 변환한 후 순회하는 방식입니다.

public class Main {
    public static void main(String[] args) {
        String input_string = "Java Program";
        System.out.println("정의된 문자열: " + input_string);
        System.out.println("문자열에 포함된 문자들:");
        for(char temp : input_string.toCharArray()) {
            System.out.print(temp + ", ");
        }
    }
}

실행 결과

정의된 문자열: Java Program
문자열에 포함된 문자들:
J, a, v, a, , P, r, o, g, r, a, m,

두 방법의 비교 및 정리

for 루프는 인덱스 기반으로 동작하기 때문에 역순 순회, 특정 위치부터 시작하기 등 세밀한 제어가 필요할 때 적합합니다. 반면 for-each 루프는 인덱스 관리 없이 모든 문자를 순서대로 처리하므로 가독성이 뛰어나고 실수 가능성이 낮습니다.

두 예제 모두 동일한 결과를 출력하지만, 상황에 맞는 방식을 선택하면 더 깔끔하고 유지보수하기 좋은 코드를 작성할 수 있습니다. 추가로 참고할 만한 내용으로, Java 8 이상에서는 chars() 스트림 메서드를 사용해 input_string.chars().forEach(c -> System.out.print((char)c + ", "));와 같이 함수형 스타일로도 처리할 수 있습니다.