DevBoi

[Java] String, String Builder, StringBuffer 본문

Language/[Java]

[Java] String, String Builder, StringBuffer

HiSmith 2022. 3. 15. 23:31
반응형

1. String 

String은 불변 객체이다. 한번 값이 할당되면, 변하지 않고, 메모리를 추가적으로 점유하게 된다.

해당 String 변수에 대한 값을 변경한다고 다른 값을 넣게되면,

기본타입이 아니기때문에 값이 변경되는 것이 아니고, 참조하고있는 데이터의 주소가 달라질뿐 기존 가리키는 주소가 삭제되거나 변경되는 것은 아니다.

 

2.StringBuilder

StringBuilder와 StringBuffer는 우선 String 과 다르게, append나 delete등 api를 사용하여, 동일 객체 내에서 문자열을 변경하는 것이 가능하게 해준다. 즉, 신규 객체를 생성하는 것이 아니고, 기존 객체의 값을 변경할수 있게 해준다.

따라서 문자열 연산이 빈번하게 발생된다면, 해당 두가지를 쓰는 것이 좋다.

 

String Builder는, StringBuffer와 다르게 동기화를 지원하지 않는다.

따라서 멀티쓰레드 환경에서 데이터의 안정성, 즉 thread-safe한 환경을 보장하지 않는다.

 

3.StringBuffer

StringBuilder와 다르게, 멀티쓰레드 환경에서 안정성을 보장해준다. 동기화를 지원해주기 때문에, 멀티쓰레드 환경에서 안전하나,

단일쓰레드에서의 성능은 StringBuilder보다 좋지 않습니다.

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] 제네릭이란?  (0) 2022.03.15
[Java] 직렬화와 역 직렬화  (0) 2022.03.15
[Java] static 의 의미  (0) 2022.03.15
[Java] Boxing UnBoxing  (0) 2022.03.15
[Java] Primitive Type vs Reference type  (0) 2022.03.15