티스토리 뷰

Programming/Java

StringBuffer, StringBuilder

Albothyl 2016. 8. 23. 21:02

StringBuffer, StringBuilder


String은  Immutable Object이다. 때문에 입력한 String이 변경될 경우 새로운  memory(Heap)에 변경된 String 객체가 생성된다. 그래서 String을 parsing하여 "+" 연산으로 새로운 문자열을 생성하면 memory(Heap)가 낭비되고, 속도도 느리다. 


이런 이유로 JDK 1.5 버전 이전에는 성능상 이슈가 있었지만 JDK 1.5 부터 StringBuffer, StringBuilder가 생기면서 이슈가 해결되었다. 또한 String을 사용하더라도 Compile시 String을 StringBuilder로 Compile되도록 변경되었다. 하지만 명시적으로 StringBuilder를 사용하는것이 좋을것 같다.


StringBuffer, StringBuilder는 mutable하다. 내부적으로 배열의 형태로 선언되기 때문에 문자열 처리 후 새로운 인스턴스가 할당되는 것이 아닌 자신의 인스턴스를 계속적으로 변화 시킨다고 할 수 있다.


StringBuffer와 StringBuilder의 차이는 ThreadSafe의 유무이다. 즉 "synchronized 키워드가 선언되어 있는가?" 의 차이이다.


- StringBuffer 는 method에 synchronized 키워드가 있어서 ThreadSafe 하지만StringBuilder 보다 느리다.


- StringBuilder 는 synchronized 키워드가 없어서 ThreadSafe 하지 못하지만 빠르다.

'Programming > Java' 카테고리의 다른 글

LocalDateTime  (0) 2019.03.11
JMX - mBean  (2) 2018.11.15
자료구조  (0) 2016.08.22
Generic  (0) 2016.08.22
Static  (0) 2016.08.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함