[Java] toCharArray()

코드 속의 "진돌"·2024년 1월 25일

Java

목록 보기
2/2
post-thumbnail

자바에서 문자열을 다룰 때 String 클래스의 다양한 메서드를 사용한다. 이중에서도 toCharArray() 메서드는 문자열을 문자의 배열로 변환하는 간단하면서도 유용한 기능을 제공하는데,

이번 포스팅에서는 toCharArray() 메서드의 작동 원리부터 실용적인 활용 사례까지 자세히 살펴보자.



toCharArray()


toCharArray() 메서드는 자바의 String 클래스의 포함된 메서드로, 문자열을 char 타입의 배열로 변환한다.
이 메서드는 매개변수를 받지 않으며, 문자열 내의 각 문자를 char 배열의 요소로 복사한다.
또한 이 메서드는 원본 문자열을 변경하지 않고, 문자열의 각 문자를 차례대로 배열에 복사하여 새로운 배열을 생성한다.


✏️ 사용법

String str = "Hello, Java!";
char[] chars = str.toCharArray();

이 코드에서, str이라는 문자열이 char 타입의 배열 chars로 변환된다.


✏️ 메서드 동작 원리

toCharArray() 메서드는 내부적으로 문자열을 구성하는 각 문자를 순회하며, 이를 새로 생성된 char 배열에 복사한다. 배열의 크기는 원본 문자열의 길이와 동일하다.

public char[] toCharArray() {
    // 문자열의 길이만큼의 크기를 가진 char 배열을 생성
    char result[] = new char[value.length];
    // System.arraycopy를 사용하여 문자열의 내용을 새 배열에 복사
    System.arraycopy(value, 0, result, 0, value.length);
    return result;
}

✏️ 활용 사례

1️⃣ 대소문자 변환

toCharArray()를 사용하면 문자열의 각 문자에 쉽게 접근할 수 있으며, 이를 이용해 다양한 문자열 조작 작업을 수행할 수 있다.

String message = "Hello World";
char[] chars = message.toCharArray();

for (int i = 0; i < chars.length; i++) {
    if (Character.isUpperCase(chars[i])) {
        chars[i] = Character.toLowerCase(chars[i]);
    } else if (Character.isLowerCase(chars[i])) {
        chars[i] = Character.toUpperCase(chars[i]);
    }
}

String modifiedMessage = new String(chars);
System.out.println(modifiedMessage); // 출력: "hELLO wORLD"

위 코드를 출력하면 결과는 아래와 같다.

hELLO wORLD

2️⃣ 팰린드롬 검사

문자열의 특정 조건을 검사할 때도 toCharArray() 메서드가 유용하다. 예를 들어, 주어진 문자열이 특정 조건을 만족하는지 여부를 확인하는 데 사용할 수 있다.

String str = "racecar";
char[] chars = str.toCharArray();
boolean isPalindrome = true;

for (int i = 0; i < chars.length / 2; i++) {
    if (chars[i] != chars[chars.length - 1 - i]) {
        isPalindrome = false;
        break;
    }
}

System.out.println(str + " is a palindrome: " + isPalindrome);

위 코드를 출력하면 결과는 아래와 같다.

racecar is a palindrome: true



toCharArray() 메서드는 자바에서 문자열을 문자 단위로 다루기 위한 강력하고 간단한 도구이다. 문자 배열로 변환함으로써, 문자열의 각 문자에 쉽게 접근하고, 문자 기반의 알고리즘을 구현할 수 있으며, 이 메서드의 활용은 문자열 처리의 효율성과 유연성을 크게 향상시킬 수 있다.

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글