이번에 공부 할 내용은 String , StringBuffer , StringBuilder에 관한 이야기이다.
위 세가지에 대한 차이점은 먼저 String 과 나머지 StringBuffer , StringBuilder에 대한
차이가 있다.
String은 모두가 잘 알 다시피 Immutable 하단게 가장 큰 특징이다. 만약에 concat을
하게 된다면 새롭게 string 객체를 생성하기 때문에 수행시간에 있어서 오래 걸린다.
그러나 StringBuffer , StringBuilder 같은 경우는 Mutable 하기 때문에 buffer size를
넘지 않는 한 계속해서 append , delete , insert 등 자유로운 변환이 가능해진다.
그 다음 Mutable 한 두 개의 클래스의 다른 점은 multi - threading 환경에서 동기화의
문제가 있다.
StringBuffer 같은 경우는 내부 함수가 synchronized 되있어 safe한 반면 StringBuilder 같은
경우는 그렇지 않아 unsafe하다.
그러나 성능 적인 면에서는
- String < StringBuffer < StringBuilder (concat 연산 수행 , 단일 threading)
- StringBuffer < StringBuilder < String (concat 연산 x , 단일 threading)
와 같은 성능을 보이기 때문에 상황에 따라서 합리적인 선택을 해야 될 것 같다.
"개인적인 느낀점"
위와 같은 정보도 사실 초보 개발 단계에서는 크게 고려하지 않아도 될 사항이지만
내가 나중에 더 많은 걸 배우고 개발하게 될 때 이러한 지식들은 중요한 밑바탕일 될 것
같다.
댓글 없음:
댓글 쓰기