반응형
이전 포스팅에서 문자열 합치기 관련해서 StringBuffer,StringBuilder 에 대해 다룬 글이 있다.
자세한 내용은 아래 참고 포스팅 참고 바란다.
우선 포스팅의 결론을 먼저 말하면
String과 StringBuffer/StringBuilder의 차이점은 String은 immutable(불변), StringBuffer는 mutable(변함)에 있다.
좀더 부연설명을 하면
- String
- String 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않음
- 새로운 String 객체를 만든 후, 새 String 객체에 연결된 문자열을 저장하고, 그 객체를 참조하도록 함
이런 이유들로 문자열 연산이 많은 경우엔 비효율적이다.
- StringBuffer,StringBuilder
- 문자열 연산 등으로 기존 객체의 공간이 부족하게 되는 경우,기존의 버퍼 크기를 늘리며 유연하게 동작
- 참고로 buffer 랑 builder 의 차이는 동기화 여부.
StringBuffer는 각 메서드별로 Synchronized Keyword가 존재하여, 멀티스레드 환경에서도 동기화를 지원
StringBuilder는 동기화를 보장하지 않음.
결론은 아래와 같다.
String -> 짧은 문자열을 더할 경우 사용
StringBuffer-> 스레드에 안전한 프로그램이 필요할 때나, 개발 중인 시스템의 부분이 스레드에 안전한지 모를 경우 사용하면 좋음
StringBuilder-> 스레드에 안전한지 여부가 전혀 관계 없는 프로그램을 개발할 때 사용하면 좋음
참고 포스팅
https://thenicesj.tistory.com/546
반응형
'IT > Java' 카테고리의 다른 글
HashMap 정렬(Key/Value) (22) | 2024.07.29 |
---|---|
Collections 함수에 대해 (19) | 2024.07.28 |
List와 ArrayList (7) | 2024.07.24 |
[Error] Failed to parse configuration class (23) | 2024.07.23 |
charAt 문자열 비교 (12) | 2024.07.22 |
댓글