본문 바로가기
IT/Java

String / StringBuffer,StringBuilder 차이

by 성준하이 2024. 7. 25.
반응형

이전 포스팅에서 문자열 합치기 관련해서 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

 

문자열 합치기 방법(concat, StringBuilder, StringBuffer, + ) (23.04.26)

이번 포스팅에서는 다룰 내용은 자바에서 String을 이어주기 위한 방법들이다. 어찌보면 정말 간단하지만 다양한 방법들이 있으니 이 포스팅에서 배워가길 바란다. 연산자 설명 사용법 (HelloWorld)

thenicesj.tistory.com

 

반응형

'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

댓글