Notice
suyeonme
[Java] String, SpringBuffer, StringBuilder의 차이점 본문
문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다.
String 클래스는 불변성(immutable)을 가지고, StringBuffer, StringBuilder는 가변성(mmutable)을 가진다.
String
- 불변성(immutable)을 가지므로 변하지 않는 문자열을 저장하는데 적합하다.
- thread-safe하므로 멀티 스레드 환경에서 사용하기 적합하다.
String str = "I am a";
str = str + "developer";
// I am a developer
위 예시의 경우, str 변수의 "I am a" 값을 할당받은 메모리는 GC(Garbage Collection)되고, "I am a developer" 값을 할당받은 새로운 메모리 영역을 가리키게된다. 즉 String은 불변하므로, 문자열을 수정하는 시점에 String 인스턴스가 새롭게 생성된다.
StringBuilder
- 가변성(mmutable)을 가지므로, 문자열의 추가/수정/삭제가 빈번하게 발생하는 경우 적합하다.
- thread-safe하지않으므로 멀티스레드 환경에서의 사용이 적합하지 않다. 동기화를 지원하지 않기때문에 싱글스레드 환경에서는 StringBuffer보다 성능이 뛰어나다.
StringBuilder stringBuilder = new StringBuilder("I am a");
stringBuilder.append("developer");
String str = stringBuilder.toString();
StringBuffer
- 가변성(mmutable)을 가지므로, 문자열의 추가/수정/삭제가 빈번하게 발생하는 경우 적합하다.
- thread-safe하므로 멀티스레드 환경에서 사용한다.
StringBuffer stringBuffer = new StringBuilder("I am a");
stringBuffer.append("developer");
StringBuffer str = stringBuffer.toString();
'프로그래밍👩🏻💻 > Java' 카테고리의 다른 글
[Java] CheckedException, UnCheckedException이란? (0) | 2023.04.02 |
---|---|
[Java] Optional 클래스 (0) | 2023.04.01 |
[Java] 메서드 참조(Method Reference)란? (0) | 2023.03.01 |
[Java] 람다 표현식(Lamda Expression)과 함수형 인터페이스(Functional Interface) (0) | 2023.03.01 |
[Java] Boxing, Unboxing이란? (0) | 2023.03.01 |
Comments