StringBuilder, StringBuffer Class는 문자열을 변경하거나 이어붙이는 경우 메모리를 추가생성할 필요없이 기존 문자열을 확장시키는 클래스이다.
Thread-safe란?
멀티스레드프로그래밍에서 어떤 변수에 동시 접근이 이루어져도 프로그램 실현에 전혀 문제가 없음을 말한다. 즉, 두 thread가 동시에 한 문자열에 접근하더라도 안전한 변경을 보장해준다.
String Class는 한 번 생성되면 문자열이 변경되지 않는 불변(immutable)의 성질을 지니고 있다. 즉, 기존 문자열에 새로운 문자열을 추가하려면 메모리에서 문자열이 변경되는 것이 아니라 새로운 메모리 공간을 확보하여 문자열이 생성된다.
String str = "abc"; str = str.concat("12");
이런 코드처럼 String의 변경이 빈번한 경우, 메모리 자원낭비를 초래하기 때문에 StringBuilder와 StringBuffer를 사용하는 것이 좋다.
String 클래스는 불변(immutable) 속성을 가짐으로써 안전하다고 했습다. 값이 변경되지 않기 때문에 여러 스레드가 데이터를 공유하더라도 동기화를 신경쓸 필요가 없이 안정성이 유지되는 장점이 있다.