Programming Language/Java

[Java] String, StringBuffer, StringBuilder에 대해서 정리하자

Tenacity_Dev 2024. 6. 1. 20:22
728x90

Java에서 문자열을 처리했던 클래스들에 대해서 정리를 해보자.

 

String

Java에서 String은 불변(immutable)한 문자열을 처리하기 위한 클래스이다. 즉, String 객체가 생성되면 그 값은 변경되지 않는다.

 

StringBuffer

Java에서 StringBuffer는 가변(mutable)한 문자열을 처리하기 위한 클래스이다. 즉, 새로운 문자열을 추가하거나 변경하게 되면 “기존의 객체”로 추가 및 변경이 된다.

 

StringBuilder

Java에서 StringBuilder는 가변(mutable)한 문자열을 처리하기 위한 클래스이다.

StringBuffer와 마찬가지로 새로운 문자열을 추가하거나 변경하게 되면 "기존의 객체"로 추가 및 변경이 된다.

StringBuffer와 다르게 멀티쓰레드 환경에서 안정적이지 않으며, StringBuilder는 싱글쓰레드 환경에서 StringBuffer보다 더 빠른 성능을 가진다.

 

String, StringBuffer, StringBuilder에 대한 비교

차이점 String StringBuffer StringBuilder
선언 방식 String str = "Hello"; StringBuffer sb = new StringBuffer("Hello"); StringBuilder sb = new StringBuilder("Hello");
문자열 변경 방법 str += " World"; sb.append(" World"); sb.append(" World");
클래스 종류 불변(immutable)한 클래스 가변(mutable)한 클래스 가변(mutable)한 클래스
변수의 추가 및 변경 시 메모리 성능 불리함 유리함 유리함
단일 쓰레드 환경에서 성능 안정적 안정적 안정적
멀티 쓰레드 환경에서 성능 안정적 안정적, 동기화 과정에서 성능 저하 안정적, 동기화 과정에서 성능 저하 X
속도 매우 느림 빠름 빠름
사용목적 문자열 추가와 변경이 발생하지 않는 경우 사용하는 것이 좋다. 멀티쓰레드 환경에서 문자열의 변수의 추가와 변경이 자주 발생하는 경우 사용하면 좋다. 단일쓰레드 환경에서 문자열의 변수의 추가와 변경이 자주 발생하는 경우 사용하면 좋다.

 

String을 StringBuffer/StringBuilder로 변환

String str1 = "String";

// String to StringBuffer
StringBuffer strToSb1 = new StringBuffer(str1);   // String

// String to StringBuilder
StringBuilder strToSb2 = new StringBuilder(str1); // String

 

StringBuffer, StringBuilder를 String으로 변환 : String.valueOf(), .toString()

// StringBuffer
StringBuffer sb3 = new StringBuffer("String");

// StringBuffer to String
String str3 = String.valueOf(sb3); // String


// StringBuilder
StringBuilder sb4 = new StringBuilder("String"); 

// StringBuilder to String
String str4 = String.valueOf(sb4); // String

 

참고

https://adjh54.tistory.com/129

 

[Java] String, StringBuffer, StringBuilder 이해하기

해당 페이지에서는 String과 StringBuffer, StringBuilder에 대해서 이해하고 각각의 차이점과 언제 사용해야 하는지에 대해 이해하기 위한 글입니다. 1) String, StringBuffer, StringBuilder 💡 String이란? - Java에

adjh54.tistory.com

 

728x90