String객체는 하나의 값을 수정 할 때 메모리 하나를 계속해서 확장해 붙이는 것이 아니라 새로운 공간에 새로운 문자열을 할당하기 때문에 메모리를 많이 차지하게 된다.
그래서 나온 것이 StringBuffer와 StringBuilder이고 문자열이 변경 되었을 시에 새로운 공간에 새로운 문자를 할당하지 않고 하나의 메모리를 확장하며 기존에 있었던 문자를 수정한다.
String의 단점
1) 문자열을 생성하였을 때 객체를 생성하기 때문에 가비지 콜렉터에 의해 제거되야 한다.
(기존에 있던 문자라면 어떻지..)
2) 문자열 연산이 많으면 객체를 계속해서 생성하기 때문에 오버헤드가 발생하고 성능이 떨어진다.
String의 장점
1) String 클래스의 객체는 불변하기 때문에 단순하게 읽어가는 조회연산에서 타 클래스보다 빠르게 읽을 수 있다.
(멀티쓰레드 환경에서 동기화를 신경 쓸 필요가 없다.)
StringBuffer, StringBuilder의 차이점
-StringBuffer : 멀티쓰레드환경 지원
-StringBuilder : 멀티쓰레드환경 지원하지 않음
StringBuilder가 속도가 더 빠르며 쓰레드를 신경쓰지 않아도 되는 환경일 때 사용한다.
String클래스는 불변이다.
http://fowler.egloos.com/1243657
String is immutable
앞에서 보았던 immutable, mutable object불변? 가변? (단어 뜻 모르면 사전 찾아보세용~) String은 immutable이고, StringBuffer는 mutable이다. ‘String 객체는 immutable이다’ 라는 말은 한번 생성이 되면 String객체가 변할 수 없다는 얘기야. public class
fowler.egloos.com
'2019백업' 카테고리의 다른 글
JAVA-StringTokenizer (0) | 2019.03.29 |
---|---|
JAVA-java.util.* (Date,Calendar,StringTokenizer,ArrayList,HashMap) (0) | 2019.03.29 |
자바-String클래스 (0) | 2019.03.29 |
2.자바 기본 (0) | 2019.03.19 |
1. JAVA 설치 & PATH 설정하기 (0) | 2019.03.15 |