String


장점 불변성(Immutability): 한 번 생성된 String 객체의 값은 변경할 수 없어 보안적으로 안전하고, 생성된 문자열이 공유되거나 재사용될 수 있습니다.
쓰레드 안전(Thread Safe): 불변성으로 인해 여러 쓰레드에서 동시에 사용해도 문제가 발생하지 않습니다.
단점 성능: 문자열을 변경할 때마다 새로운 String 객체가 생성되어, 연산이 많을 경우 성능 저하를 일으킬 수 있습니다.

 

StringBuffer


장점 가변성(Mutability): StringBuffer는 가변적이어서 문자열을 변경하거나 추가할 때 기존 객체를 재사용할 수 있어 메모리를 효율적으로 사용합니다.
쓰레드 안전: StringBuffer의 모든 메소드는 동기화되어 있어, 멀티쓰레드 환경에서 안전하게 사용할 수 있습니다.
단점 성능 오버헤드: 동기화로 인한 성능 오버헤드가 있어, 단일 쓰레드 환경에서는 불필요한 성능 저하를 일으킬 수 있습니다.

 

StringBuilder


장점 가변성(Mutability) : StringBuilder도 가변적으로 문자열을 변경하거나 추가할 때 기존 객체를 재사용합니다.
성능: StringBuilder는 동기화를 하지 않기 때문에 StringBuffer에 비해 더 빠릅니다. 따라서, 단일 쓰레드 환경에서의 성능이 우수합니다.
단점 쓰레드 비안전(Thread Unsafe): 동기화를 제공하지 않아 멀티쓰레드 환경에서는 적합하지 않습니다.

 

요약


String 문자열 연산이 적을 때
・변경이 거의 없을 때
변경된 데이터의 안정성이 중요할 때
StringBuffer 멀티쓰레드 환경에서 문자열의 변경이 자주 발생하는 경우
StringBuilder 단일 쓰레드 환경에서 문자열의 변경이 자주 발생하는 경우
성능이 중요한 경우 사용

※성능으로만 따졌을 땐 StringBuilder > StringBuffer > String 순으로 볼 수 있다

'JAVA' 카테고리의 다른 글

자료 구조 (List, Set, Map)의 정리와 쓰임새  (0) 2024.05.07
String.valueOf() 와 Integer.toString() 의 차이  (0) 2024.05.01
Stream  (0) 2022.07.25
람다식(Lambda Expression)  (0) 2022.07.17
enum  (0) 2022.01.16

+ Recent posts