백엔드 개발 · 기초
Java의 String, StringBuilder, StringBuffer의 차이점은 무엇인가요?
힌트 · 불변성, 동기화, 성능 측면에서 비교해보세요.
불변성가변성동기화스레드 안전성능
모범답안
네, Java에서 String, StringBuilder, StringBuffer는 문자열을 다루는 클래스이지만 중요한 차이점이 있습니다.
가장 큰 차이점은 불변성입니다. String은 불변 클래스이기 때문에 한 번 생성된 String 객체의 내용은 변경할 수 없습니다. 문자열을 수정하는 연산을 수행하면 새로운 String 객체가 생성됩니다.
반면 StringBuilder와 StringBuffer는 가변 클래스입니다. 즉, 객체의 내용을 직접 수정할 수 있습니다.
StringBuilder와 StringBuffer의 차이점은 동기화 여부입니다. StringBuffer는 동기화를 지원하므로 멀티 스레드 환경에서 안전하게 사용할 수 있습니다. 반면 StringBuilder는 동기화를 지원하지 않기 때문에 단일 스레드 환경에서 더 빠른 성능을 보입니다.
따라서, 문자열 내용이 자주 변경되는 경우 StringBuilder (단일 스레드) 또는 StringBuffer (멀티 스레드)를 사용하는 것이 String을 사용하는 것보다 성능상 유리합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Java / Spring 면접 질문
- Java의 equals()와 hashCode() 메서드를 왜 함께 오버라이드해야 하나요?
- Java의 Checked Exception과 Unchecked Exception의 차이점과 사용 지침에 대해 설명해주세요.
- Spring의 프로파일(Profile) 기능은 무엇이며, 어떻게 활용하나요?
- Spring의 @Transactional 애노테이션의 propagation 속성에 대해 설명하고, REQUIRED와 REQUIRES_NEW의 차이점을 설명해주세요.
- Spring Bean의 생명주기(Lifecycle)에 대해 설명해주세요. 초기화와 소멸 콜백은 어떻게 처리하나요?
- Spring에서 AOP(Aspect Oriented Programming)란 무엇이며, 어떤 상황에서 사용하나요?