어제 오늘 내일

[Java StringBuffer] append() – 문자열 이어붙이기 본문

IT/Java

[Java StringBuffer] append() – 문자열 이어붙이기

hi.anna 2025. 9. 24. 12:12

StringBufferStringBuilder와 마찬가지로 가변(mutable) 문자열을 다루는 클래스입니다.
여기에 문자열을 효율적으로 이어붙일 수 있는 메서드가 바로 append()입니다.
멀티스레드 환경에서도 안전하게 동작한다는 점에서 차이가 있습니다.

 

1. append() 기본 사용법

public synchronized StringBuffer append(String str)
  • 기존 문자열 뒤에 새로운 문자열을 붙임
  • 반환 타입이 StringBuffer 자신이므로 메서드 체이닝 가능
  • synchronized 키워드로 멀티스레드 환경에서도 안전
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb.toString());
// 출력: Hello World

👉 기존 문자열을 수정하는 방식이라 String처럼 매번 새 객체를 만들지 않아 효율적입니다.

 

2. 다양한 오버로드

append()는 문자열뿐 아니라 여러 타입을 지원합니다.

StringBuffer sb = new StringBuffer();

sb.append("Java ");   // 문자열
sb.append(2025);      // 정수
sb.append(3.14);      // 실수
sb.append(true);      // 불리언
sb.append('X');       // 문자

System.out.println(sb.toString());
// 출력: Java 20253.14trueX

👉 내부적으로 String.valueOf()를 호출하기 때문에 어떤 타입이든 자연스럽게 붙일 수 있습니다.

 

3. 메서드 체이닝 활용

반환값이 StringBuffer이므로 여러 번 이어붙일 때 코드가 간결해집니다.

StringBuffer sb = new StringBuffer();
sb.append("Java")
  .append(" Programming")
  .append(" Language");

System.out.println(sb.toString());
// 출력: Java Programming Language

👉 + 연산보다 훨씬 가독성이 좋고 성능도 효율적입니다.

 

4. 실전 활용 예제

로그 메시지 조립

StringBuffer log = new StringBuffer();
log.append("[INFO] ")
   .append(System.currentTimeMillis())
   .append(" - ")
   .append("User logged in.");

System.out.println(log.toString());

👉 멀티스레드 환경에서도 안전하게 문자열을 조합할 수 있습니다.

파일 경로 생성

StringBuffer path = new StringBuffer();
path.append("C:/Users/")
    .append("John/")
    .append("Documents/")
    .append("report.pdf");

System.out.println(path.toString());
// 출력: C:/Users/John/Documents/report.pdf

👉 동적으로 문자열을 조합해야 할 때 유용합니다.

 

5. StringBuilder와 비교

  • StringBuilder.append() → 빠르지만 스레드 안전성 없음
  • StringBuffer.append() → 상대적으로 느리지만 스레드 안전성 보장

👉 싱글스레드 환경에서는 StringBuilder가, 멀티스레드 환경에서는 StringBuffer가 적절합니다.

 

6. 정리

  • append()StringBuffer에서 문자열을 효율적으로 이어붙이는 핵심 메서드
  • 문자열뿐만 아니라 숫자, 불리언, 문자 등 다양한 타입 지원
  • 반환값이 자기 자신이라 메서드 체이닝 가능
  • 스레드 안전성 보장 (synchronized)

 

🔑 한 줄 정리
👉 멀티스레드 환경에서 안전하게 문자열을 이어붙이고 싶다면 StringBuffer.append()를 쓰자!

 

 

반응형
Comments