[Java] String, StringBuffer, StringBuilder

Kim Hyen Su·2024년 6월 5일
0

📐Java

목록 보기
15/18
post-thumbnail

String

Stirng, StringBuffer, StringBuilder 간의 차이점에 대한 면접 질문에 대한 답변에 대해 생각해보기 위해 해당 포스팅을 작성했습니다.

☕ String

Java에서 String은 대표적인 불변성 객체입니다. 이로 인해서 자바에서는 String Literal을 별도로 관리하는 String Constant Pool이 별도로 힙 메모리에 존재합니다.

String은 불변성이라는 내용의 포스팅은 다음의 링크를 참조바랍니다.

기본적으로 String은 char형 배열을 사용하여 문자열로 표현할 수 있습니다.

String 클래스에서는 문자열과 관련된 많은 기능을 제공합니다.(문자열 비교, 검색, 추출, 대문자/소문자 변환 등)

☕ StringBuffer

StringBuffer는 JDK 공식 API 문서에 A thread-safe, mutable sequence of characters 라고 표현됩니다.

String과 유사하게 문자열을 표현하기 위해 사용되지만, 가변성(mutable) 객체라는 특징이 있습니다. 즉, StringBuffer로 생성된 문자열은 값이 언제든 변할 수 있습니다.

또한, StringBuffer는 멀티 쓰레드 환경에서도 동기화를 지원합니다.

대표적인 메서드로 append와 insert가 있습니다. append는 문자열 값의 맨 뒤에 추가하며, insert는 지정된 특정 위치에 문자열을 추가해줍니다.

멀티 쓰레드 환경에서 사용하기에 안전하도록 설계되었지만, 두 개 이상의 쓰레드가 하나의 자원에 접근하는 경우 동시성을 제어해줘야 합니다.

☕ StringBuilder

StringBuffer와 동일하게 가변성 객체라는 특징이 있습니다.
StringBuffer와 차이점은 동일한 API를 제공하지만, 단일 쓰레드 환경에서만 사용 가능하도록 설계되어 있습니다. 이로 인해서 연산 속도가 StringBuffer보다 빠르게 수행됩니다.

profile
백엔드 서버 엔지니어

0개의 댓글