본문 바로가기

알고리즘

String, StringBuilder, StringBuffer

반응형

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