어제 오늘 내일

[Java StringBuffer] charAt(), setCharAt() – 특정 문자 읽기와 수정하기 본문

IT/Java

[Java StringBuffer] charAt(), setCharAt() – 특정 문자 읽기와 수정하기

hi.anna 2025. 9. 27. 00:55

StringBuffer는 가변(mutable) 문자열을 다루는 클래스라서, 특정 위치의 문자를 읽거나 바꾸는 작업을 직접 할 수 있습니다.
String과 달리 새로운 객체를 만들 필요가 없다는 점이 장점입니다.

 

1. charAt() – 특정 문자 읽기

public synchronized char charAt(int index)
  • 지정한 인덱스의 문자를 반환
  • 인덱스는 0부터 시작
StringBuffer sb = new StringBuffer("Java");
char c = sb.charAt(2);
System.out.println(c);
// 출력: v

👉 "Java"의 인덱스 2에는 'v'가 있습니다.

 

2. setCharAt() – 특정 문자 수정

public synchronized void setCharAt(int index, char ch)
  • 지정한 인덱스의 문자를 새로운 문자로 교체
StringBuffer sb = new StringBuffer("Java");
sb.setCharAt(0, 'K');
System.out.println(sb.toString());
// 출력: Kava

👉 첫 번째 문자 'J''K'로 바뀌었습니다.

 

3. 실전 활용 예제

문자열 일부 소문자/대문자 변환

StringBuffer sb = new StringBuffer("Hello World");
sb.setCharAt(6, 'w');
System.out.println(sb.toString());
// 출력: Hello world

👉 "World"의 첫 글자를 소문자로 바꿀 수 있습니다.

특정 문자 변환

StringBuffer sb = new StringBuffer("a-b-c-d");
for (int i = 0; i < sb.length(); i++) {
    if (sb.charAt(i) == '-') {
        sb.setCharAt(i, '_');
    }
}
System.out.println(sb.toString());
// 출력: a_b_c_d

👉 특정 문자를 다른 문자로 변환하는 데 유용합니다.

 

4. 주의할 점

  • 인덱스 범위를 벗어나면 StringIndexOutOfBoundsException 발생
StringBuffer sb = new StringBuffer("Java");
// sb.charAt(10);       // 예외 발생
// sb.setCharAt(10,'X'); // 예외 발생

👉 반드시 0 <= index < length() 범위 내에서 사용해야 합니다.

 

5. 정리

  • charAt(index) → 특정 위치 문자 읽기
  • setCharAt(index, ch) → 특정 위치 문자 수정
  • 문자열 일부 수정, 특정 문자 변환 등에 자주 사용
  • 스레드 안전 (synchronized)

 

🔑 한 줄 정리
👉 문자열의 개별 문자를 다루려면 StringBuffer.charAt()setCharAt()을 활용하자!

반응형
Comments