[JAVA] String, StringBuilder, String Buffer 차이

문학적인유사성·2022년 2월 21일
0

language

목록 보기
6/24

String

immutable(불변)
한번 할당된 메모리 공간이 변하지 않음.
+연산 또는 concat메소드 사용시, 기존의 생성된 String 클래스 객체 문자열에 다른 문자열을 붙히는 것이 아님. 새로운 String 객체를 만들어, 연결된 문자열 저장, 그 객체를 참조
문자열 연산이 적을때 사용
동기화에 신경을 안써도됨(Thread-safe), 내부데이터를 자유롭게 공유
(Heap메모리 영역(가비지 컬렉션 동작), 산번 생성된 객체의 내부 내용을 변화 시킬수 없음. 기존 객체 제거시 Java의 가비지 컬렉션이 회수)

StringBuffer

mutable(가변)
API이용가능
각 메소드별로 Synchronized Keyword 존재, 멀티스레드 환경에서 동기화를 지원
멀티스레드 환경에서 좋음
동기화 관련 처리로 인해서 Stringbuilder에 비해 단일스레드에서 성능이 좋지않다.
멀티스레드 환경

StringBuilder

mutable(가변)
API이용가능
멀티스레드 동기화 보장X
단일스레드 환경에서 좋음

JDK 1.5이후 버전에서는 String 활용시 StringBuilder와 성능상 차이는 없지만, 객체를 추가생성함

profile
Are you nervous? Don't be

0개의 댓글