개발자 기술 면접 준비/정리

String VS StringBuffer VS StringBuilder

ucong 2021. 6. 8. 17:41

String

- String 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않는다.

- concat, + 와 같은 연산시 메모리의 내용이 변하는 것이 아니라, 새로운 String 객체를 만든 후 새 String 객체에 연결된 문자열을 저장하고 그 객체를 참조하게 된다.

- 기존 객체를 참조하는 변수가 없다면 가비지컬렉터의 대상이되어 수거된다.

- 연산이 많아지게되면 카비지컬랙터가 수거하기 전에 heap영역에 계속 쌓이게 되어 메모리가 부족해 속도가 느려진다.

 

StringBuffer StringBuilder

- String과 다르게 클래스는 한 번만 만들고 메모리의 값을 변경시켜서 문자열을 변경. 그러므로 문자열연산이 자주 있을 때 사용하면 좋음

 

StringBuffer

- 속도가 느리나 멀티 스레드 환경에서 Synchronize 키워드가 가능하므로 동기화가 가능

 

StringBuilder

- 속도가 빠르나 동기화를 지원하지 않기 때문에 멀티 스레드 환경에서 적합하지 않음

 

 

* 쓰레드 동기화 - 한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하도록 하는 것

'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글

== VS equals()  (0) 2021.06.08
Array VS List  (0) 2021.06.08
런타임 VS 컴파일  (0) 2021.06.08
메모리 구조  (0) 2021.06.07
메모리란?  (0) 2021.06.07