String
- 불변 객체 > 한번 생성되면 변경 X
- + 로 문자열 연결 시 새로운 문자열 객체가 생김, 기존 문자열 객체는 JVM가 Garbage collection 수행
- 따라서, String 객체를 더하는 연산이 많아지면 메모리 할당 & 해제가 발생해 성능에 좋지 않음
StringBuilder
- mutable > 값이 변할 수 있음
- 문자열 더하기 수행 시 새로운 객체를 생성하는 게 아닌, 기존 데이터에 더하는 방식
- 속도 빠름, 상대적으로 부하가 적음
[ 정리 ]
긴 문자열을 더하는 상황이 발생할 경우 StringBuffer, StringBuilder 사용하기
- 문자열 변경이 빈번하지 않음 > String
- 문자열이 빈번하게 변경, 멀티 쓰레드 환경 O > StringBuffer
- 문자열이 빈번하게 변경, 멀티 쓰레드 환경 X > StringBuilder
[ 사용법 ]
import java.lang.StringBuilder;
// 생성
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder(20); // 사이즈 지정 가능
StringBuilder sb = new StringBuilder("aaa"); // 문자열로 초기화
sb.append(String str); // 문자열 추가
sb.append(4).append("\\n");
sb.insert(int offset, String str); // offset 위치에 str 추가
sb.insert(2, "ccc");
sb.replace(int index1, int index2, String str); // index1, index2에 위치한 문자열을 str로 대체
sb.replace(3, 6, "hi");
sb.substring(int start); // star 부터 끝까지 인덱싱
sb.substring(int start, int end); // start ~ end -1 까지 인덱
sb.substring(5);
sb.substring(3, 7)
sb.deleteCharAt(int index); // 인덱스에 위치한 문자 하나 삭제
sb.deleteCharAt(3);
sb.delete(int start, int end); // start ~ end-1 까지 문자를 삭제
sb.delete(3, sb.length());
sb.toString(); // String으로 변환
sb.reverse(); // 해당 문자 전체를 뒤집기
sb.setCharAt(int index, String s); // index 위치의 문자를 문자열 s로 변경
sb.setLength(int len) // 문자열 길이 조정
sb.trimToSize(); // 문자열이 저장된 char [] 배열 사이즈를 현재 문자열 길이와 동일하게 조정
// String 클래스의 trim이 앞 뒤 공백을 제거하는 것과같이 공백 사이즈를 제거,
// 배열의 남는 사이즈가 공백이기 때문에, 문자열 뒷 부분의 공백을 모두 제거해준다
'CS' 카테고리의 다른 글
[Java] Stream API (0) | 2023.06.26 |
---|---|
[Java] 문자 -> 문자열 변환하기, 문자열 내 특정 문자 제거하기 replaceAll() (0) | 2023.06.26 |
[Java] EOF까지 입력 받기 (0) | 2023.06.26 |
[Java] BufferedReader, BufferedWriter 사용하기 (0) | 2023.06.26 |
[CS 스터디] Network - TCP 3 way handshake & 4 way handshake (0) | 2023.06.22 |