String, StringBuffer, StringBuilder는 모두 문자열을 다루는 클래스입니다. 이들의 차이점은 다음과 같습니다.
String
String 클래스는 불변(immutable)한 객체입니다. 즉, 한 번 생성된 문자열은 변경할 수 없습니다. 따라서, 문자열을 연결하거나 변경할 때마다 새로운 객체를 생성해야 합니다. 이는 메모리 낭비를 야기할 수 있습니다. 그러나, 불변성을 보장하기 때문에 스레드 안전성이 보장됩니다.
StringBuffer
StringBuffer 클래스는 가변(mutable)한 객체이며, 동기화된 메소드를 제공합니다. 따라서, 멀티쓰레드 환경에서 안전하게 사용할 수 있습니다. 또한, 문자열을 연결하거나 변경하는 등의 작업에서 새로운 객체를 생성하지 않고 기존 객체를 변경합니다. 그러나, 동기화 처리로 인해 성능이 떨어질 수 있습니다.
StringBuilder
StringBuilder 클래스는 StringBuffer와 마찬가지로 가변(mutable)한 객체이지만, 동기화 처리를 하지 않아 멀티쓰레드 환경에서는 안전하지 않습니다. 그러나, 단일 쓰레드 환경에서는 StringBuffer보다 더 빠르게 문자열을 처리할 수 있습니다.
따라서, 문자열을 다룰 때는 String, StringBuffer, StringBuilder 중 어느 것을 사용할지 선택해야 합니다. 멀티쓰레드 환경에서는 StringBuffer를 사용하고, 단일 쓰레드 환경에서는 StringBuilder를 사용하는 것이 좋습니다. 그리고 문자열을 연결하거나 변경하는 작업이 많을 경우에는 StringBuffer나 StringBuilder를 사용하는 것이 성능상 이점이 있습니다.
'Programming > Java' 카테고리의 다른 글
ConcurrentModificationException (0) | 2023.02.23 |
---|---|
Checked Exception과 Unchecked Exception (0) | 2023.02.23 |
Final, Finally, Finalize 비교 (0) | 2023.02.22 |
객체 상태의 영속화 (0) | 2023.02.22 |
객체 직렬화 (Object Serializable) (0) | 2023.02.22 |