String, Strig Buffer, String Builder

·2021년 7월 28일
1

✨String

  • immutable(불변성) 이기 때문에 + 등 문자열끼리 합칠 때 원본변경이 아니라 새로운 String 객체를 생성한다
  • JDK 1.5 이후부턴 컴파일 타임에 StringBuilder로 변경한다
    • 반복문을 사용해서 문자열을 더할 때 객체를 계속 추가해야된다
  • 불변객체기 때문에 멀티쓰레드 환경에서 동기화를 신경쓰지 않아도 된다
  • 문자열 연산이 적고 조회가 많은 상황에서 쓰기 좋다.

✨StringBuilder, StringBuffer

  • Mutable(값이 변하는) 객체다
  • 문자열 연산시 새롭게 객체를 생성하지 않고 처음에 만든 객체를 이용해 연산한다
  • 문자열 연산으로 기존 객체의 공간이 부족해지면 크기를 변경시켜 유연하게 동작
  • 문자열 연산이 자주 발생하는 상황에서 성능적으로 유리하다

String Builder와 String Buffer는 동기화 여부에 따라 달라진다

String Builder

  • 동기화를 고려하지 않는 상황에서 사용.(Thread를 사용하지 않는 상황.) 문자열 연산이 많은 싱글 쓰레드 환경에서 사용된다

String Buffer

  • 동기화가 필요한 멀티 쓰레드 환경에서 사용. 문자열 연산이 많은 멀티 쓰레드 환경에서 사용된다
  • 각 메서드별로 Synchronized 키워드가 존재한다
  • 동기화 관련 처리로 인해 StringBuilder에 비해 성능이 좋지 않다

String은 짧은 문자열을 더할 때
String Buffer는 쓰레드에 안전한 프로그램이 필요할 때
String Builder는 쓰레드와 상관없는 프로그램이 필요할 때
사용한다

profile
💻📝🤯

0개의 댓글