동그란 도그린
StringBuilder와 StringBuffer 본문
StringBuilder와 StringBuffer를 사용하는 이유
String의 원본 값은 변경할 수 없음. 불변(immutable) 자료형
아래 코드에서 객체를 수정한 것처럼 보이지만, 사실 또다른 새로운 String 객체를 생성한 것임.
String 타입의 문자열을 수정할 때마다 메모리 내의 힙 영역에 값이 변경된 새로운 인스턴스가 생성되므로 메모리 낭비가 될 수 있고, 속도도 느려짐.
String str = "hello";
str += "world";
따라서 문자열 변경 작업이 거의 없을 때는 String을 사용하고, 문자열을 빈번하게 추가, 수정, 삭제하는 경우에는 StringBuilder와 StringBuffer를 사용하는 게 좋음.
StringBuilder와 StringBuffer는 내부 Buffer(데이터를 임시로 저장하는 메모리)에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업을 할 수 있음.
StringBuilder과 StringBuffer의 차이 - 1가지
- StringBuilder와 StringBuffer은 딱 한 가지 차이점이 있음
- 멀티 스레드(multi thread) 환경에서 안전한지 아닌지의 차이
- StringBuffer 클래스는 동기화를 지원하기 때문에 멀티 스레드 환경에서도 안전함,
- StringBuffer는 멀티 스레드 환경에서, 한 스레드가 append()를 수행하고 있으면 다른 스레드가 append()를 수행하지 못하도록 잠시 대기시키고 순차적으로 실행하도록 함.
- StringBuilder 클래스는 동기화를 지원하지 않으므로 멀티 스레드 환경에서는 안전하지 않음.
- 따라서 속도 면에서는 StringBuffer보다 좋음
- StringBuffer 클래스는 동기화를 지원하기 때문에 멀티 스레드 환경에서도 안전함,
'알고리즘 > Java' 카테고리의 다른 글
Deque (0) | 2023.03.22 |
---|---|
StringBuilder 빈 값으로 초기화 - setLength() 이용 (0) | 2023.03.20 |
정렬 - Comparable, Comparator (0) | 2023.03.15 |
숫자, 문자 비교 - compareTo() (0) | 2023.02.23 |
배열 복사 - Arrays.copyOf(), Arrays.copyOfRange() (0) | 2023.02.21 |
Comments