본문 바로가기

생각정리/Java

[JAVA] 문자열 사용

String, StringBuffer, StringBuilder 차이점


String

String와 래퍼 클래스들은 객체를 생성 한 뒤 상태를 변경할 수 없다.

String 객체는 생성되고 변경하기 위해서는 새로운 String 객체를 생성한다.

Stirng str = "test"; // 선언
str += " start"; // 문자열 변경 str = str.concat(" start");과 동일
// 기존의 test를 가져와 start를 합쳐 새로운 test start 문자열을 만들어 str에 선언해주는 것과 같다.

StringBuffer

멀티스레드 환경에서 안정적으로 사용할 수 있는 가변형 문자열 처리를 위한 클래스.

컬랙션과 마찬가지로 수정을 염두하고 만들어진 문자열 관련 클래스

StringBuilder

싱글스레드 환경에서 안정적으로 사용할 수 있는 가변형 문자열 처리를 위한 클래스.

컬랙션과 마찬가지로 수정을 염두하고 만들어진 문자열 관련 클래스

사용법은 StringBuffer와 StringBuilder가 동일하다.

String str = "test";

//StringBuilder stringBuilder = new StringBuilder("test"); // 문자열을 바로 넣어 선언
StringBuilder stringBuilder = new StringBuilder(str);
stringBuilder.append(" start"); // 문자열 추가
//String str2 = String.valueOf(stringBuilder); // StringBuilder를 String으로 변환
String str2 = stringBuilder + ""; // 간단한 방법으로 String으로 변환

//StringBuffer stringBuffer = new StringBuffer("test"); // 문자열을 바로 넣어 선언
StringBuffer stringBuffer = new StringBuffer(str);
stringBuffer.append(" start"); // 문자열 추가
//String str3 = String.valueOf(StringBuffer); // StringBuffer를 String으로 변환
String str3 = StringBuffer + ""; // 간단한 방법으로 String으로 변환
문자열을 이용하는 곳 아주 많기 때문에 어떻게 사용되는지 어떤 장점들이 있는지를 알고 사용하면 좋다.
알고리즘 문제를 풀 때도 문자열을 사용해야 할 일이 많아 일반적으로 String을 사용할 때와 StringBuilder를 사용할 때의 속도 차이로 문제가 틀릴 수 도 있으니 잘 보고 사용하면 될 것 같다.

'생각정리 > Java' 카테고리의 다른 글

자바 버전 선택에 대한 이유  (0) 2024.05.27
[JAVA] 스레드  (0) 2023.08.17
[JAVA] 업캐스팅, 다운캐스팅  (0) 2023.08.17
[JAVA] Wrapper 클래스  (0) 2023.08.16
[JAVA] Scanner 와 BufferedReader 차이  (0) 2023.08.14