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 |