본문 바로가기

개발중/Java

String,StringBuffer, StringBuilder 차이점

728x90
반응형

 String   StringBuffer   StringBuilder  차이점  

 

 

String          = immutable(불변)

StringBuffer  = mutable(가변)

StringBuilder = mutable(가변)

 

String          

다시 말해서, String 클래스

StringBuffer 클래스나 StringBuilder 클래스와 다르게 리터럴을 통해 생성되면

그 인스턴스의 메모리 공간은 절대 변하지 않는다.

 

 


StringBuffer

StringBuffer는 불변객체가 아니다. 

내부적으로 buffer를 가지고 있는데,

StringBuffer 인스턴스를 생성할때는 적절한 길이의 char형 배열이 생성되고,

이 배열은 문자열을 저장하고 편집할때 사용하는 buffer가 된다.

 

여기서 적절한 길이를 지정해야 하는 이유는,

수정하는 문자열이 버퍼의 길이를 넘어가면 버퍼의 길이를 늘려주는 작업이 추가되기 때문이다.

배열은 길이를 바꿀수 없기때문에 이전에 작업하던 배열의 값을 복사해서 넣어준다.


 

StringBuilder 

StringBuilder는 기본적으로 사용하는 메소드나 사용법은 동일하여 서로 호환이 됩니다.

(append(), delete(), reverse() 등)

StringBuffer와의 차이점은 동기화를 하는지 안하는지의 차이인데

StringBuffer - 동기화O

StringBuilder - 동기화X

싱글쓰레드 환경에서의 개발이라면 StringBuilder를 멀티쓰레드 환경이라면 동기화처리가된 StringBuffer를 사용하면 됩니다.

즉, StringBuffer의 동기화 처리를 빼고 만들어진 클래스가 StringBuilder입니다.

 

728x90
반응형

'개발중 > Java' 카테고리의 다른 글

java 8 stream api documentation  (2) 2021.02.24
[Java] Java8 람다식  (0) 2021.02.24
Demon 만들기 (API 사용)  (0) 2021.02.23
java 에서 data → excel 파일  (0) 2021.02.10
mysql timeStamp 자바에서 날짜로 만들기  (0) 2021.01.26