String, StringBuilder, StringBuffer은 자바에서의 문자열 처리에 가장 많이 사용되는 세 클래스입니다.
불변성
String 클래스 특징
- 문자열 처리 및 관리하는 클래스
- immutable(불변성)의 특징이 있어 문자열 연산 작업 시 비효율적
한 번 생성된 객체의 메모리가 불변이기 때문에, 메모리가 모두 각각 할당
String 클래스의 장. 단점
장점
- 간단하게 사용 가능
- Thread-safe
- 단순 조회나 자주 사용하는 경우 빠르게 읽을 수 있다.
단점
- 연산 작업에 쓰기에는 효율이 떨어짐
String a라는 변수에 값을 담기 위해 메모리를 할당하는 상황을 예로 설명해보겠습니다.
String a = "Hello"; // hello 값이 담긴 메모리가 생성되고, a는 메모리 주소를 참조합니다.
여기에 " World"라는 문자열을 더해주면, 기존의 생성된 메모리에 값이 추가되는 것이 아니라
"Hello World"라는 값을 가진 새로운 String 객체를 만들어지고,
기존의 "Hello"가 담긴 메모리 공간은 GC에의해 비워지게 되는 것입니다.
가변성
StringBuilder, StringBuffer 공통점
두 개의 클래스는 모두 mutable(가변성)을 가지고 있습니다.
불변성 = 메모리가 고정 할당
가변성 = 문자열이 추가/삭제될 때 버퍼의 크기를 늘리거나 줄이는 등 메모리를 유동적으로 사용
StringBuilder, StringBuffer 차이점
StirngBuilder와 StringBuffer의 차이점은 실행 환경입니다.
StirngBuilder : NOT Thread-safe 스레드에 안전한지 여부 관계없음 - 싱글 스레드
StringBuffer : Thread-safe. 스레드에 안전한 프로그램 개발할 때 혹은 개발 중인 시스템의 부분이 스레드에 안전한지 모를 경우 - 멀티 스레드
정리하자면 다음과 같습니다.
728x90
'📓 Study > Tech Interview' 카테고리의 다른 글
이상(Anomaly)이란? (0) | 2021.09.22 |
---|---|
KEY란 무엇인가요? (0) | 2021.09.21 |
🚗오버라이딩과 🏠오버로딩에 대해 설명해주세요 (2) | 2021.09.21 |
SQL과 NoSQL 차이점은 무엇일까요? (0) | 2021.09.18 |
🗺 원시타입과 🧭참조 타입의 차이는 무엇일까요? (0) | 2021.09.17 |
댓글