반응형
StringBuilder 클래스
StringBuilder와 StringBuffer 클래스는 String 클래스와 같이 문자열을 다루는 클래스이다.
But, String 클래스는 문자열을 넣을 경우, 생성자의 크기에 맞게 길이가 생성되며 한번 생성하고 나면 문자열 값을 변경하지 못하는 단점이 있다.
이를 보완하는 것이 StringBuilder와 StringBuffer 클래스이다.
즉, 한번 생성한 인스턴스 안의 문자열 (char 배열)을 추가&변경할 수 있어 String클래스의 문제를 보완한다.
두 클래스는 거의 비슷하지만(쓰임과 메소드가 같지만)
StringBuffer는 동기화 처리를 할 수 있다. 즉, 여러 곳에서 동시에 같은 문자열 인스턴스에 접근할 때 중복 접근을 막을 수 있는 장치를 가지고 있다.
그렇기 때문에 StringBuilder에 비해 더 무겁다.
그러므로 특별한 이유가 없다면 StringBuilder를 사용하는 것이 일반적이다.
메서드
# String 클래스와 동일한 메서드
- {}.charAt(idx) : 특정 인덱스 위치의 문자 반환
- {}.indexOf("s") / lastIndexOf() : 특정 문자열 "s"의 인덱스 위치 반환. 없으면 -1 반환 (lastIndexOf는 뒤에서부터)
- {}.length() : 문자열 길이 반환
- {}.replace("a", "b") : 검색된 문자열 "a"를 "b"로 교체
- {}.substring(a, b) : 특정 인덱스 범위 내(a부터 b-1까지) 문자열 복사하여 새로운 인스턴스로 반환
- {}.toString() : 문자열로 출력
# 추가로 가능한 메서드
- {StringBuilder}.append("s") : 문자열 "s" 추가
- {StringBuilder}.capacity() : 여유있게 잡아둔 해당 문자열의 사이즈 (append() 등 문자열 조정 시 배열 size가 자동 변경됨)
- {StringBuilder}.delete(a, b) : 특정 인덱스 사이의 (a부터 b-1까지) 문자열 제거
- {StringBuilder}.deleteCharAt(a) : 특정 인덱스의 한 문자 삭제 (.delete(a,a+1)과 같음)
- {StringBuilder}.insert(idx, "s") : 인덱스 위치 a에 문자열 "s" 삽입
- {StringBuilder}.reverse() : 문자열을 거꾸로뒤집음 ex) "Hello" -> "olleH"
- {StringBuilder}.setCharAt(idx, 'c') : 특정 위치 idx의 문자를 'c로 변경
- {StringBuilder}.setLength(a) : 문자열의 길이를 a로 조정 (현재 문자열보다 길게 조정 시, 공백으로 채움)
- {StringBuilder}.trimToSize() : 문자열의 여유 공백(capacity)을 제거하여 현재 문자열 길이와 동일하게 조정
아래 글을 참고하였습니다 :)
반응형
'Algorithm & Data Structure > 개념' 카테고리의 다른 글
[Concept] 인접행렬과 인접 리스트(LinkedList, ArrayList) (0) | 2022.03.12 |
---|---|
[Concept] 인접 행렬과 인접 리스트 (0) | 2022.01.13 |
[Concept] 재귀 용법 (0) | 2021.08.17 |
삽입 정렬 (0) | 2021.08.15 |
선택 정렬 (0) | 2021.08.15 |