본문 바로가기
코딩 문제/알고리즘

StringBuilder란? StringBuilder 개념과 사용법

by CODESIGN 2022. 6. 11.

보통 두 개의 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
    }
}

 

 

 

 

댓글