SeouliteLab

[Java] String, StringBuilder, StringBuffer: 차이와 활용 본문

카테고리 없음

[Java] String, StringBuilder, StringBuffer: 차이와 활용

Seoulite Lab 2024. 2. 27. 16:58

Java에서 문자열을 다루는 클래스로 String, StringBuilder, StringBuffer가 있다. 각각의 클래스는 문자열을 다루는 방식과 성능 면에서 차이가 있다.

  • String 클래스:
    • String 클래스는 불변(immutable)한 특성을 가지고 있다. 즉, 한 번 생성된 문자열은 변경할 수 없다.
    • 문자열을 연결하거나 수정할 때마다 새로운 String 객체가 생성되므로, 문자열 연산이 빈번하게 일어나는 경우에는 성능 저하가 발생할 수 있다.
    • 주로 문자열이 변하지 않고 고정된 경우에 사용된다.
String str = "Hello";
str += " World"; // 새로운 String 객체 생성

 

  • StringBuilder 클래스:
    • StringBuilder 클래스는 가변(mutuable)한 문자열을 다루는 데 사용됩니다. 내부적으로 가변 크기의 버퍼를 사용하여 문자열을 저장하고 수정한다.
    • 문자열을 연결하거나 수정할 때 새로운 객체를 생성하지 않고 기존 객체를 수정하기 때문에 성능이 우수하다.
    • 단일 스레드 환경에서 사용된다.
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World"); // 기존 StringBuilder 객체 수정

 

  • StringBuffer 클래스:
    • StringBuffer 클래스도 StringBuilder와 마찬가지로 가변 문자열을 다루는 데 사용된다. 하지만 StringBuffer는 스레드 안전(thread-safe)하도록 설계되어 있다.
    • 여러 스레드가 동시에 접근할 때 발생할 수 있는 문제를 해결하기 위해 동기화된 메서드로 구성되어 있다.
    • 멀티 스레드 환경에서 사용된다.
StringBuffer sb = new StringBuffer();
sb.append("Hello");
sb.append(" World"); // 기존 StringBuffer 객체 수정