: 문자열을 나타내는 클래스이고 문자열을 조작하는 다양한 메서드를 제공하므로 문자열을 처리하는데 유용
: String과 같이 문자열이지만 문자열 연산 등으로 기존 객체의 공간이 부족한 경우 문자열을 동적으로 변경할 수 있는 가변성을 제공함
: StringBuffer처럼 문자열을 나타내는 클래스로 가변성을 제공하고, 동적으로 변경 가능함 동기화된 메서드를 제공하지 않으므로 단일 스레드 환경에서 높은 성능을 제공함
: String, StringBuffer, StringBuilder 모두 문자열을 관리하는 클래스이지만 String은 불변성 때문에 문자열을 조작하는 경우 유용하게 사용할 수 없음 그러므로 이때는 StringBuffer와 StringBuilder의 사용을 권장함
StringBuffer와 StringBuilder는 기존 버퍼 크기를 늘려 유연하게 동작할 수 있지만 StringBuffer는 동기화를 보장해 멀티스레드 환경에서 사용을 권장하고 StringBuilder는 동기화를 보장하지 않아 단일 스레드 환경에서의 사용을 권장함
👀 참고 : 동기와 비동기
- 동기 : 순차적으로 메서드를 호출시켰을 때 이전 메서드의 결과값을 기다리고 그 후에 다음 메서드가 호출됨
- 비동기 : 순차적으로 메서드를 호출시켰을 때 이전 결과값을 기다리지 않음
예전에 정말 잠깐 스터디했을 때 내가 맡아 정리했던 부분이다. 면접 예상 질문이기도 하고 programmers 문제 풀 때 buffer의 사용을 잘 이용하면 좋을 거 같아서 다시 블로그에 작성한다.