String
-한번 생성한 String 객체의 내용은 변경할 수 없는 불변(Immutable)한 클래스입니다.
-불변하기 때문에 멀티 스레드 환경에서 동기화 문제를 신경 쓸 필요가 없고, 조회 연산이 빠릅니다.
-새로운 문자열을 만들 때마다 새로운 String 객체를 생성해야 합니다.
-String은 조회 연산이 빠르지만, 문자열을 변경하는 경우 매우 비효율적이며 메모리 소비가 많아집니다.
StringBuilder
-문자열을 변경할 수 있는 Mutable(가변)한 클래스입니다.
-문자열을 변경하는 동안 내부 버퍼(char 배열)를 사용하므로, 문자열 수정 시 새로운 객체를 생성하지 않습니다.
-문자열을 변경하는 경우 String 대신 StringBuilder를 사용하면 성능상 이점이 있습니다.
-StringBuilder는 멀티 스레드 환경에서 동기화를 보장하지 않습니다.
StringBuffer
-문자열을 변경할 수 있는 Mutable(가변)한 클래스입니다.
-문자열을 변경하는 동안 내부 버퍼(char 배열)를 사용하므로, 문자열 수정 시 새로운 객체를 생성하지 않습니다.
-문자열을 변경하는 경우 String 대신 StringBuffer를 사용하면 성능상 이점이 있습니다.
-StringBuffer는 멀티 스레드 환경에서도 동기화를 보장하도록 설계되었습니다.
-하지만 StringBuilder에 비해 처리 속도가 느리기 때문에, 단일 스레드 환경에서는 StringBuilder를 사용하는 것이 좋습니다.
'java(자바)' 카테고리의 다른 글
[java(자바)] 직렬화(Serialization)와 역직렬화(Deserialization) _디버깅의 눈물 (0) | 2023.03.30 |
---|---|
[java(자바)] Call by Value와 Call by Reference의 차이 _디버깅의 눈물 (0) | 2023.03.29 |
[java(자바)] Wrapper Class란? _디버깅의 눈물 (0) | 2023.03.27 |
[java(자바)] 자바의 데이터 타입-기본형(Primitive Type) vs 참조형(Reference Type) _디버깅의 눈물 (0) | 2023.03.26 |
[java(자바)] 객체 지향 프로그래밍 vs 절차 지향 프로그래밍 _디버깅의 눈물 (0) | 2023.03.25 |