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 |