[Java/Kotlin] String, StringBuffer, StringBuilder

Jay·2021년 2월 15일
0

Java&Kotlin

목록 보기
15/30
post-thumbnail

String

  • 변경이 불가

StringBuffer

  • 변경 가능
  • Thread-Safe하게 동기화 가능 (Synchronized ⭕️)

StringBuilder

  • 변경 가능
  • 동기화 불가능 (Synchronized ❌)

String의 특징

  • new 연산을 통해 생성된 Instance의 메모리 공간은 변하지 않는다.(Immutable)
  • GC로 제거되어야 한다.
  • 문자열 연산 시, 새로 객체를 만드는 Overhead가 발생한다.
  • 객체가 불변하므로, Multi-thread에서 동기화를 신경 쓸 필요가 없다.(조회 연산에 매우 큰 장점이다)

📌 문자열 연산이 적고, 조회가 많은 멀티쓰레드 환경에서 좋다.


StringBuffer, StringBuilder 특징

  • 공통점
    • new 연산으로 클래스를 한 번만 만든다. (Mutable)
    • 문자열 연산 시 새로 객체를 만들지 않고, 크기를 변경
    • StringBuffer와 StringBuilder 클래스의 메서드가 동일하다.
  • 차이점
    • StringBuffer는 Thread-Safe하다.
    • StringBuilder는 Thread-Safe하지 않다.

📌 StringBuffer 클래스 : 문자열 연산이 많은 Multi-Thread 환경

📌 StringBuilder 클래스 : 문자열 연산이 많은 Single-Thread 또는 Thread를 신경을 쓰지 않는 환경

profile
developer

0개의 댓글