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
728x90
'Programming Language > Java' 카테고리의 다른 글
[Java] 객체비교 Comparable과 Comparator (0) | 2024.05.29 |
---|---|
[Java] 변수(Variable) (0) | 2024.01.04 |
[Java] synchronized는 자바 몇 버전 부터 사용된 걸까? (0) | 2023.09.10 |
[Java] JVM (Java Virtual Machine) 자바 가상 기계 (0) | 2023.07.27 |
[Java] Garbage Collection(가비지 컬렉션)이란 (0) | 2023.04.19 |