개발햄비

[Java]String와 StringBuffer, StringBuilder의 장단점 및 차이점 본문

개발/java

[Java]String와 StringBuffer, StringBuilder의 장단점 및 차이점

개발햄 2019. 1. 5. 20:31




안녕하세요 오늘은 


String, StringBuffer, StringBuilder의 장단점 및 차이점을 알아보려고 합니다 !


Java에서 개발을 하다보면 String, StringBuffer, StringBuilder가 어떤 차이가 있을까라고 생각하곤 합니다


어떤 차이가 있을까요?


우선 


1.String 


String은 불변의 속성을가지고 있습니다.

즉 , 선언을 하면 그에 대한 메모리 공간은 변하지 않고 고정된 값을 가지게 됩니다.


String을 + 연산을 하게 되면 기존에 존재했던 메모리가 변화하는 것이 아니라 새로운 String 객체가 생성되어 다시 새로운 메모리 공간을 만들게 됩니다.


때문에 문자열 계산이 많아질 경우 계속 메모리 공간을 생성하기 때문에 성능이 저하되는 단점을 가지고 있습니다만,


간단히 읽는 부분에서는 이미 고정된 메모리를 가지고 있기 때문에 빠르게 읽을 수 있는 장점을 가집니다. 


즉, 간단히 조회하는 업무에서는 String을 쓰는 것이 좋고 연산이 많을 때는 쓰지 않는 것이 좋습니다.



2. StringBuilder 


그에 반면 StringBuilder는 가변의 속성을 가집니다. 즉 메모리 공간이 변화할수 있습니다.


문자열의 계산이 필요할 땐 문자 크기에 맞춰서 메모리가 변화합니다.


하지만 StringBuilder의 경우 thread-safe, 동기화를 지원하지 않기 때문에 멀티 쓰레드 환경에서는 어울리지 않습니다.


대신 동기화를 고려하지 않기 때문에 싱글쓰레드 환경에서는 빠른 속도를 보여줍니다.



3. StringBuffer

StringBuilder와 비슷하게 StringBuffer도 가변의 속성을 지닙니다

하지만 StringBuilder와 다르게 Synchronized를 지원하기 때문에 StringBuilder 와 달리 thread-Safe , 동기화를 지원


합니다. 때문에 멀티 쓰레드 환경에서는 StringBuffer를 사용하는 것이 좋다고 할 수 있습니다.


4. 결론

간단한 조회 업무에서는 String 객체를 !

문자열 연산이 많을 경우에는 StringBuilder 또는 StringBuffer를 사용하는 것이 좋습니다.



.