[Java] String,

이 페이지는 String과 StringBuffer, 이들 사이의 차이점 및 사용 시기를 이해하기 위한 것입니다.

1) 문자열, 문자열 버퍼


스트링이란?

Java의 String은 변경할 수 없는 문자열을 처리하기 위한 클래스입니다. 즉, String 객체가 생성되면 해당 값은 변경되지 않습니다. “새 객체”추가 및 변경됩니다.

StringBuffer란?

-제이ava의 StringBuffer는 변경 가능한 문자열을 처리하기 위한 클래스입니다. 즉, 새 문자열을 추가하거나 변경할 때 기존 객체”추가 및 변경됩니다.

(더 알아보기)

불변 클래스

– 이는 원본 개체가 생성된 후에는 상태를 변경할 수 없음을 의미합니다. 원래 생성된 개체가 추가되거나 수정되면 새 개체가 다시 생성되고 구성됩니다.
– Java에서 String, Integer, Float, Double, Long, Short, Byte, Character, BigDecimal 및 BigInteger와 같은 클래스는 불변 클래스에 속합니다.

가변 클래스

– 이는 첫 번째 개체를 생성한 후 상태를 변경할 수 있음을 의미합니다. 원래 생성된 객체를 추가하거나 수정하면 기존 객체로 상태가 변경되어 구성된다.
– Java에서 StringBuffer, StringBuilder, ArrayList, LinkedList, HashMap, HashSet, TreeMap 및 TreeSet과 같은 클래스는 가변 클래스에 속합니다.

2) String과 StringBuffer의 차이점


차이점 문자열 버퍼
클래스 유형 불변 클래스 가변 클래스
추가 및 변경 시 메모리 사용량 새 개체를 만들 때마다 메모리 사용량이 증가합니다. 기존 개체를 사용하기 때문에 메모리 사용량이 상대적으로 적습니다.
상수 문자열인 경우 이점 불리
잦은 문자열 변경으로 불리 이점

문자열로 객체를 추가하는 방법

String s = "Hello";
s += " World"; // String 객체가 재 생성된다.

StringBuffer를 사용하여 문자열을 변경하는 방법

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // 기존의 StringBuffer 객체에 추가가 된다.

3) 문자열에서 StringBuffer로 / StringBuffer에서 String으로


1. 문자열을 StringBuffer로 변환하는 방법: new StringBuffer()


StringBuffer 구성에 String 객체를 포함하여 변환이 가능합니다.

String str1 = "안녕하세요 반갑습니다.";
StringBuffer strToSb1 = new StringBuffer(str1);   // 안녕하세요 반갑습니다.

2. StringBuffer를 String으로 변환하는 방법: String.valueOf(), .toString()


StringBuffer 객체는 String.valueOf() 또는 .toString()을 사용하여 변환할 수 있습니다.

StringBuffer sb2 = new StringBuffer("안녕하세요 반갑습니다.");
String str2 = String.valueOf(str2);

4) 참고


1. StringBuffer의 메소드


방법 반환 유형 설명
추가(문자열 str) 문자열 버퍼 끝에 문자열을 추가합니다.
되돌리기() 문자열 버퍼 문자열을 뒤집습니다.
삽입(정수 오프셋, 문자열 str) 문자열 버퍼 지정된 위치에 문자열을 삽입합니다.
삭제(int 시작, int 끝) 문자열 버퍼 지정된 범위의 문자열을 삭제합니다.
교체(int 시작, int 끝, 문자열 str) 문자열 버퍼 지정된 범위의 문자열을 바꿉니다.
하위 문자열(int 시작) 시작 위치에서 끝까지 문자열을 반환합니다.
하위 문자열(int 시작, int 끝) 지정된 범위의 문자열을 반환합니다.
용량() 내부 현재 용량을 반환합니다.
용량 확보(int minimumcapacity) 비어 있는 최소 용량을 보장합니다.
setCharAt(int 인덱스, char ch) 비어 있는 지정된 인덱스에서 문자를 변경합니다.
charAt(정수 인덱스) 지정된 인덱스에 있는 문자를 반환합니다.
길이() 내부 문자열의 길이를 반환합니다.
toString() String 개체로 변환합니다.

오늘 감사합니다.