본문 바로가기
개발/Java

String, StringBuilder, StringBuffer, CharSequence 이해하기

by meanjung 2023. 8. 6.

String str = new String();

str += "asdf"; --- (1)

str += "asdf"; --- (2)

str += "qwer"; --- (3)

...

을 계속 반복하면 

  1. (메모리 주소: 100) str = "asdf"
  2. 메모리 주소 100은 쓰레기가 된다.(GC의 대상)
    (메모리 주소: 200) str = "asdfasdf"
  3. 메모리 주소 200은 쓰레기가 된다. (GC의 대상)
    (메모리 주소: 300) str = "asdfasdfqwer"

이런 반복 작업이 계속 되면 GC를 계속 하게 되고, 시스템의 CPU을 사용하게 되고 시간도 많이 소요된다.

 

 

StringBuilder나 StringBuffer를 사용하면 새로운 객체를 생성하는 것이 아니라, 기존 객체에 덧붙여 사용하게 된다.

 


StringBuffer - thread safe

StringBuilder - thread unsafe


CharSequence

- 인터페이스

- 이를 구현한 클래스: String, StringBuffer, StringBuilder ...

- 다음과 같을 때 사용한다.


자바 성능 튜닝 이야기 - 이상민 저

댓글