String, StringBuffer, StringBuilder

민선규·2023년 2월 24일
0

JAVA

목록 보기
3/25
post-thumbnail

String, StringBuffer, StringBuilder

String, StringBuffer, StringBuilder는 문자열을 관리하는 클래스로 각 각의 특징이 있는데 그 특징을 한번 정리를 해보았다.

String

String 클래스의 가장 큰 특징은 불변성이다. 여기서 불변성이란? 객체가 생성된 이후 그 상태를 변경할 수 없는 것을 의미한다.

예를 들어 코드로 설명을 해보았다

//Heap에는 "ABC" 데이터가 생성되고 Stack에는 "ABC"를 참조하는 주소값을 가진 데이터가 생성된다.
public string str = "ABC";

//Heap에 "ABCEDF" 데이터가 생성되고 Stack에는 "ABC"를 
//참조하는 데이터의 값이 "ABCDEF"를 참조하는 주소값으로 가지게 된다.
str += "DEF";

이처럼 Heap에 있는 데이터를 수정하지 않고 Heap에 새로운 데이터를 생성을 한다.
그래서 데이터가 연산이 많은 경우에는 성능에 좋지 않지만 간단하게 사용이 가능하고, 동기화에 대해 전혀 신경쓰지 않아도(Thread-safe) 되는 장점이 있다.

StringBuffer, StringBuilder

StringBuffer클래스와 StringBuilder클래스는 String클래스와 다르게 가변성으로 기능적으로 크게 차이가 없다. 한 가지 큰 차이점은 동기화의 여부이다.

StringBuffer클래스는 동기화를 지원하며 StringBuilder클래스는 지원하지 않으므로 멀티 스레드 환경에서는 StringBuffer클래스를 사용하고 단일 스레드 환경에서는 StringBuilder클래스를 사용하는 것이 좋다.

0개의 댓글

관련 채용 정보