자바에서의 String 클래스는 불변한 특성을 가지고 있다. 이 뜻은 한 번 생성된 문자열은 변경할 수 없다는 것을 말한다.
따라서 문자열을 변경할 때마다 새로운 문자열이 생성되어 메모리에 할당되는데 이는 문장려 조작이 빈번한 경우에는 성능에 부정적인 영향을 미친다. 그렇지만 StringBuilder는 String과 다르게 값이 변할 수 있다.
StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다.
따라서 긴 문자열을 더하는 상황이 발생할 경우 StringBuffer 또는 StringBuilder를 적극적으로 사용하는 게 좋다.
- 생성자
- StringBuilder sb = new StringBuilder(): 객체 선언
- StringBuilder sb = new StringBuilder("aaa"): 문자열을 바로 넣을 수도 있다.
- 주요 메소드
- .append(): 문자열을 추가한다. (sb.append("bbb"), sb.append(4))
- .insert(int offset, String str): offset 위치에 str을 추가한다. (sb.insert(2, "ccc"))
- .replace(): 첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체한다. (.replace(3, 6, "ye"))
- .substring(int start, (int end)): 인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱 (sb.substring(5), sb.substring(3, 7))
- .deleteCharAt(int index): 인덱스에 위치한 문자 하나를 삭제한다. (sb.deleteCharAt(3))
- .delete(int start, int end): start 부터 end-1 까지의 문자를 삭제한다. (sb.delete(3, sb.length()))
- .toString(): String으로 변환한다. (sb.toString())
- .reverse(): 해당 문자 전체를 뒤집는다. (sb.reverse())
- .setCharAt(int index, String s): index 위치의 문자를 s로 변경
- .setLength(int len): 문자열 길이 조정, 현재 문자열보다 길게 조정하면 공백으로 채워짐, 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제
- .trimToSize(): 문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정, String 클래스의 trim()이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것, 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해준다고 보면 됨
'Java' 카테고리의 다른 글
| 전략패턴으로 코드 개선 (0) | 2024.09.04 |
|---|---|
| [Java] - Thread (0) | 2024.08.29 |
| [Java] 문자열 내장 메서드 (0) | 2024.08.16 |
| [Java] String (0) | 2024.08.16 |
| [Java] 방어적 복사 (0) | 2024.07.25 |