주제
- 정의
- StringBuilder 사용 방법
- 주요 메소드
정의
- String 클래스는 한번 생성되면 문자열이 변경되지 않는 불변(immutable)한 성질을 보유
- 기존 문자열에 새로운 문자열을 추가하고자 하는 경우 메모리에서 문자열이 추가되지 않음
- 추가는 새로운 메모리가 할당되어 문자열이 생성됨
- 문자열을 추가, 변경을 할 때마다 새로운 메모리가 할당되는것은 자원 낭비이기때문
StringBuilder 사용 방법
- 문자열의 변경이나 이어 붙이는 경우 추가 메모리 생성없이 기존 문자열이 확장 되는 클래스
- 빈번한 문자열 변경시 사용하면 성능이 좋음
- 멀티쓰레드 환경에서 문자열의 안전한 변경을 보장해주지 않는 특징 보유
사용방법
import java.lang.StringBuilder;
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("aaa");
// 문자열 추가
System.out.println(sb.append("bbb")); // aaabbb
System.out.println(sb.append("ccc")); // aaabbbccc
System.out.println(sb.append(3)); // aaabbbccc3
// 문자열 삽입
System.out.println(sb.insert(2, "ccc")); // aacccabbbccc3
// 문자열 치환, 문자열 교체
System.out.println(sb.replace(3, 6, "ye")); // aacyebbbccc3
// 인덱싱, 문자열 자르기
System.out.println(sb.substring(5)); // bbbccc3
System.out.println(sb.substring(3, 7)); // yebb
// 문자 삭제
System.out.println(sb.deleteCharAt(3)); // aacebbbccc3
// 문자열 삭제
System.out.println(sb.delete(3, sb.length())); // aac
// 문자열 변환
System.out.println(sb.toString()); // aac
// 문자열 뒤집기
System.out.println(sb.reverse()); // caa
// 문자 대체, 문자 교체, 문자 치환
sb.setCharAt(1, 'b'); // cba
System.out.println(sb);
// 문자열 길이 조정
sb.setLength(2);
System.out.println(sb); // cb
}
메소드
메소드명 |
기능 |
append() |
문자열 추가 |
insert(int offset, String str) |
offset위치에 str을 추가 |
replace(int offset, int offset, String str) |
첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열 대체 |
substring(int start, (int end)) |
인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱 |
deleteCharAt(int index) |
인덱스에 위치한 문자 하나를 삭제한다 |
delete(int start, int end) |
start부터 end-1까지의 문자를 삭제 |
toString() |
String으로 변환한다 |
reverse() |
해당 문자 전체를 뒤집는다 |
setCharAt(int index, String s) |
index 위치의 문자를 s로 변경 |
setLength(int len) |
문자열 길이 조정, 현재 문자열보다 길게 조정하면 공백으로 채워지고 짧게 조정하면 나머지 문자 삭제 |
trimToSize() |
문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정, String 클래스의 trim()이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것, 배열의 남는 사이즈는 백이라 문자열 뒤부분 공백을 제거하는거라고 생각하면됨 |