String 객체는 불변성을 가지기 때문에, 변하지 않는 문자열을 자주 읽어들이는 경우 String을 사용하면 좋은 성능을 기대할 수 있습니다. 설명을 덧붙여, StringBuffer나 StringBuilder에서 문자열 수정을 할 경우 버퍼의 크기를 늘리고 줄이고 명칭을 변경해야하는 내부적인 연산이 필요하므로 많은 양의 문자열 수정이 아니라면 String객체를 사용하는 것이 오히려 나을 수 있다.
그러나 문자열 추가, 수정, 삭제 등의 연산이 빈번하게 발생하는 알고리즘에 String 클래스를 사용하면 힙 메모리에 많은 임시 가비지가 생성되어 힙메모리의 부족으로 어플리케이션 성능에 치명적인 영향을 줄 수 있습니다.
String test = "ABC";
test += "EF";
동기화 키워드를 지원하여 멀티쓰레드 환경(thread-safe)에서 안전합니다.
멀티스레드 환경에서 안전하다??
동기화를 지원하지 않기 때문에 멀티쓰레드 환경에서 사용하는 것은 적합하지 않지만, 동기화를 고려하지 않는 만큼 단일 쓰레드에서의 성능은 StringBuffer보다 뛰어납니다.
StringBuilder는 동기화를 고려하지 않은 만큼 StringBuffer 보다 뛰어납니다?
- 위 질문의 답을 찾을 수 있는 좋은 사이트 => https://madplay.github.io/post/difference-between-string-stringbuilder-and-stringbuffer-in-java
- (위에 적힌 사이트처럼 추후에 테스트해 볼 예정)
참고사이트