반응형
String과 StringBuffer, StringBuilder의 차이점은 String은 immutable(불변), StringBuffer는 mutable(변함)하다는 점입니다.
String
String 객체는 생성시 할당된 할당된 메모리 공간이 변하지 않습니다.
문자열 연산 -> "a" + "b"
새로운 String 객체를 만들고 새 String 객체에 연결된 문자열을 저장 후 그 객체 참조하도록 합니다.
즉, String 클래스 객체는 Heap 메모리 영역에 생성되며 생성된 객체 내부 내용을 변화시킬 수 없습니다.
String 객체는 이러한 이유로 문자열 연산이 많은 경우, 그 성능이 좋지 않습니다.
하지만, Immutable 객체는 동기화에 신경쓰지 않아도 되기때문에(Thread-safe) 내부 데이터를 자유롭게 공유 가능합니다.
StringBuffer, StringBuilder
문자열 연산
String 과는 다르게 기존의 버퍼 크기를 늘리며 유연하게 동작합니다
두 클래스의 차이점- 동기화 여부
StringBuffer는 동기화를 지원하며 각 메서드별로 Synchronized Keyword가 존재하는 반면,
StringBuilder는 동기화를 보장하지 않습니다.
그렇기때문에 멀티스레드 환경에서 값 동기화 보장을 위해선 StringBuffer를
단일스레드 환경에선 StringBuilder를 사용하는 것이 좋습니다.
반응형
'알고리즘' 카테고리의 다른 글
유클리드호제법 (0) | 2021.08.24 |
---|---|
최소신장트리 (0) | 2020.12.06 |
Hash Table (0) | 2020.11.15 |
스택과 큐 (0) | 2020.09.06 |
console에서 값 읽을 때 (0) | 2020.09.06 |