-
[Java] String, StringBuilder, StringBuffer 차이Java 2023. 4. 14. 01:47
String, StringBuilder, StringBuffer 차이
String, StringBuilder, StringBuffer는 java에서 문자열을 다루는 대표적인 클래스이다.
위 3가지 클래스는 모두 문자열을 다룬다는 공통점이 있지만, 사용 목적에 따라 쓰임새가 달라진다.
🔎 String
String은 불변성(Immutable)을 가지고 있다.
String 객체가 한 번 생성되면, Heap 영역에 생성된다.
concat이나 + 연산자를 통해 문자열을 이어 붙이는 경우에도 기존 문자열에 추가되는 것이 아니라, 새로운 String 객체를 생성한 후 연결을 시켜 그 객체를 참조한다.
➡️ 이러한 이유 때문에 문자열 연산이 많은 경우 성능이 좋지 않다.
🔎 StringBuffer & StringBuilder
StringBuffer와 StringBuilder는 String과 다르게 가변성(mutable)을 가지고 있다.
연산으로 인해 객체의 공간이 부족해지면 기존의 버퍼 크기를 늘리며 유연하게 동작한다.
StringBuffer와 StringBuilder의 차이점은 동기화 여부이다.
StringBuilder는 동기화를 보장하지 않지만, StringBuffer는 각 메서드별로 Synchronized Keyword가 존재하기 때문에 multi-thread 환경에서도 사용할 수 있다.
💡 결론
[ String ]
- 짧고 간단한 문자열 연산
- multi-thread 환경
[ StringBuffer ]
- 문자열 연산이 많은 경우
- multi-thread 환경
- thread에 안전한 프로그램이 필요한 경우
[ StringBuilder ]
- 문자열 연산이 많은 경우
- thread를 고려하지 않아도 되는 경우 (단일 thread, 동기화 고려 X 경우)
📋 참고 자료
728x90'Java' 카테고리의 다른 글
[Java] 포장 클래스 (Wrapper Class) (0) 2023.04.14 [Java] ==와 equals() 차이 (0) 2023.04.14 [Java] 접근 제어 지시자 (access modifier) (0) 2023.04.14 [Java] 객체 지향 프로그래밍이란? (0) 2023.04.14 [Java] Call by Value vs Call by Reference (0) 2023.04.12