본문 바로가기
나만의 정리

자바 String, StringBuilder, StringBuffer 차이점 비교

by 코리늬 2018. 2. 7.

자바에서 문자열을 나타낼 때 String, StringBuilder, StringBuffer 방식으로 나타낼 수 있다.

하지만 무슨 차이일까? 궁금해서 찾아보았다.

String은 보통 불변의 속성을 가지고 있다.


위 처럼 str에 새로 문자를 저장하면 새로 저장된 문자가 출력된다. 하지만 불변속성이기 때문에 abcd값은 버려지지않고 가비지컬렉터에 저장된다.

반면에 StringBuilder, StringBuffer는 가변방식이며, append()메소드를 사용하여 문자열을 추가한다.


사용 방식은 똑같지만 이 둘의 차이점은 동기화이다.

StringBuffer는 동기화를 제공하기에 쓰레드 사용시 사용을 하게된다. 그런 이유로 속도는 StringBuilder에 비해 느리다.

그렇기 때문에 상황에 맞게 적절히 사용하는 것이 좋은 방식이다.


상황

1. String : 문자열이 짧을 경우

2. StringBuilder : 단일 스레드에서의 안정성만을 보장. 스레드를 사용하지 않는 프로그램 작성시

3. StringBuffer : 다중 스레드에서도 안정성을 보장. 


응답시간 : String > StringBuilder > StringBuffer


메모리 : String > StringBuilder == StringBuffer

'나만의 정리' 카테고리의 다른 글

스트림 정리  (0) 2018.05.21
자바 API 문서 찾아 보는 방법  (0) 2018.04.24
자바 생성자 정리  (0) 2018.02.21
형 변환이 헷갈릴 때, length와 length()의 차이, charAt(i)  (0) 2018.01.29
static 메소드 선언  (0) 2018.01.29

댓글