728x90
반응형
StringBuffer와 StringBuilder 공통점
String의 단점을 보완한 클래스
내부에 버퍼를 가지고 있어서 버퍼에 메모리를 임시로 저장했다가 사용함
버퍼 내부에서 추가, 수정, 삭제 작업을 할 수 있음
String의 단점
내부 문자열을 수정할 수 없음
문자열에 +연산자를 사용해 문자를 더하면 새로운 객체 생성됨
새로운 객체가 만들어져 재참조 하게 되기에 연산이 있을 때마다 메모리에 객체가 생성된다는 단점이 있음
StringBuffer와 StringBuilder 차이점
동기화 여부에 차이점이 있음
StringBuffer는 각 메서드 별로 Synchronized keyword가 존재하여 멀티스레드 환경에서도 동기화를 지원
StringBuilder는 동기화를 보장하지 않기에 단일스레드 환경에서 사용하는 것이 좋음
👉 단일스레드 환경에서 StringBuffer를 사용할 순 있지만 동기화 관련 처리로 인해 StringBuilder에 비해 성능이 안좋음
사용 환경
String | StringBuffer | StringBuilder |
• 짧은 문자열 더하는 경우 • 문자열 연산지 적고 멀티스레드 환경일 경우 |
• 스레드에 안전한 프로그램 혹은 개발 중인 시스템의 부분이 스레드에 안전한지 모르는 경우 • 문자열 연산이 많고 멀티스레드 환경일 경우 |
• 스레드에 안전한지 전혀 관계없는 프로그램 개발하는 경우 • 문자열 연산이 많고 단일스레드이거나 동기화를 고려하지 않아도 되는 경우 |
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 자바의 데이터 타입(Primitive type, Reference type) (0) | 2023.03.22 |
---|---|
[Java Error] java.lang.IllegalArgumentException: No enum constant 에러 (0) | 2023.03.02 |
[Java] equals와 == 차이점 (0) | 2023.01.06 |
[Java] Enum 사용법 (0) | 2023.01.05 |
[Java] modelMapper 사용하기 (0) | 2023.01.02 |