보통 두 개의 String 객체를 합치고 싶을 때 우리는 (+)를 사용한다.
예제
String str_1 = "Hello";
String str_2 = "World";
위 두 개의 String객체를 str_1 + str_2; 와 같은 연산을 하게 되면 새로운 String을 생성한다.
그렇다면, StringBuilder, 언제 사용하는가?
String은 소위 불변(immutable) 객체이다. 한 번 생성된 String은 내용을 바꿀 수 없다는 뜻이다. 그러므로 String객체와 String 객체를 더하면(+) 새로운 문자열이 생성되고 이는 메모리 할당과 메모리 해제를 발생시켜 연산이 많아질수록 성능적으로 좋지 않다.
그래서 나온 것이 StringBuilder이다.
StringBuilder
String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다. 즉, 긴 문자열을 더하는 상황에서는 StringBuilder을 사용하면 좋다.
주요 메서드
.append(): 문자열을 추가한다.
.length(): 길이를 확인한다.
.insert(int index, String str): index위치에 str을 추가한다.
.replace(): 첫번째와 두 번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체한다.
.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): 문자열 길이 조정. 현재 문자열보다 길면 공백으로 채워지고, 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제된다.
사용법
import java.lang.StringBuilder;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
StringBuilder sb = new StringBuilder(""); //객체 선언
// 문자열을 바로 넣을 수도 있다.
// StringBuilder sb = new StringBuilder("Hello");
// 문자열 추가
sb.append("Hello");
System.out.println(sb.append("World")); // HelloWorld
System.out.println(sb.append(2)); // HelloWorld2
// 문자열 길이
System.out.println(sb.length()); // 11
// 문자열 삽입
System.out.println(sb.insert(5, " ")); // Hello World2
// 문자열 치환, 문자열 교체
System.out.println(sb.replace(6, 11, "Sam")); // Hello Sam2
// 인덱싱, 문자열 자르기
System.out.println(sb.substring(6)); // Sam2
System.out.println(sb.substring(0, 5)); // Hello
// 문자 삭제
System.out.println(sb.deleteCharAt(9)); // Hello Sam
// 문자열 삭제
System.out.println(sb.delete(5, sb.length())); // Hello
// 문자열 변환
System.out.println(sb.toString()); // aac
// 문자열 뒤집기
System.out.println(sb.reverse()); // olleH
System.out.println(sb.reverse()); // Hello
// 문자 대체, 문자 교체, 문자 치환
sb.setCharAt(1, 'E');
System.out.println(sb); // HEllo
// 문자열 길이 조정
sb.setLength(2);
System.out.println(sb); // HE
}
}
'코딩 문제 > 알고리즘' 카테고리의 다른 글
문자열 치환 - replace(), replaceFirst(), replaceAll() (0) | 2022.07.16 |
---|---|
[자료구조] LinkedList 사용법 & 예제 (Java) (0) | 2022.03.17 |
[자료구조] ArrayList 사용법 & 예제 (0) | 2022.03.16 |
[자료구조] Map - HashMap, TreeMap, LinkedHashMap (0) | 2022.03.11 |
댓글