-
String StringBuilder StringBuffer전공 지식/JAVA 2018. 12. 6. 16:29
자바에서 스트링 세가지 종류!
String StringBuilder StringBuffer
에 대해 알아보겠다~
결과만 보면 다음과 같다
String
StringBuilder
StringBuffer
Immutable
Mutable
Mutable
Synchronized
Unsynchronized
Synchronized
Immutable 과 Mutable 의 차이는 무엇일까?
Immutable (불변)
: String 은 생성되면 그 메모리 공간은 절대 변하지 않는다.
따라서 문자열을 바꿀 때, 새로운 메모리 공간을 할당하여 String 이 만들어지고 그 위치를 변수가 가리키게 되는 방식이다.
문자열이 자주 바뀐다면 객체를 계속해서 새로 만들어야 하기 때문에 오버헤드가 발생할 가능성이 커진다.
또 Garbage Collector 에 의해 delete 되어야한다.
mutable (가변)
: 메모리 공간의 크기가 변할 수 있음을 의미한다.
StringBuilder, StringBuffer 는 메모리 공간의 크기가 변할 수 있으므로 문자열이 바뀔 때 메모리 공간의 주소는 변하지 않고 크기가 줄어들었다 커졌다 한다.
Synchronized (동기화)
: MultiThread 환경일 때, 알아서 동기화가 된다.
각각 언제 사용하면 좋을까?
String : 값이 변경되지 않을때, 멀티 스레드 환경일 때
StringBuilder : 값이 자주 변경될 때, 멀티 스레드 환경이 아닐 때
StringBuffer : 값이 자주 변경될 때, 멀테 스레드 환경 일 때
'전공 지식 > JAVA' 카테고리의 다른 글
Interface (0) 2020.07.23 Heap 영역 Detail / Garbage-Collection (0) 2020.07.13 interface 간 상속 및 다중 상속 (0) 2018.12.05 Final 변수, 함수, Class (0) 2018.12.05 Static class Member Method, Variables (0) 2018.12.05 댓글