본문 바로가기

코테 공부/java

StringBuilder

많은 문자열을 연결하면 많은 중간 문자열 객체가 생성되어 비효율적이다.

String 객체는 변경 불가능하여 한 번 생성되면 내용을 바꿀 수 없다.

따라서 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지 컬렉터로.

StringBuilder는 변경 가능한 문자열을 만들어 주기 때문에, String을 합치는 작업 시 하나의 대안이 된다.

 

    public static void main(String[] args)
    {
        StringBuilder strBuilder = new StringBuilder();
        strBuilder.append("문자열 ").append("연결");
        // String str = stringBuilder;   String에 StringBuilder 그대로 할당 불가.
        // toString()을 붙여야.
        String str = strBuilder.toString();

        //new StringBuilder() 괄호 안에 String 타입 넣어주면 해당 String 내용을 가진 StringBuilder 객체 생성 가능.
        StringBuilder newStrBuilder = new StringBuilder(str);

        // 문자열 연결     -같은 값을 출력
        System.out.println(strBuilder);
        System.out.println(str);
        System.out.println(newStrBuilder);

        // 결연 열자문     -아까거 거꾸로
        strBuilder.reverse();
        System.out.println(strBuilder);

        // StringBuilder 일부 대체
        // strBuilder.replace(시작 인덱스, 끝 인덱스(제외), 대체해서 들어갈 String);
        // 1번 인덱스 부터 문자열 들어가서 문자열 다 넣고 기존에 3번째 인덱스부터 다시 시작
        // 문결연 열자문연결
        newStrBuilder.replace(1,3, strBuilder.toString());
        System.out.println(newStrBuilder);

        StringBuilder StrBuilder = new StringBuilder("0123456789");
        // 0추가56789
        // 들어가는 문자열이 시작과 끝 인덱스 사이 수보다 적으면 그냥 날리고 5번 인덱스부터 그대로 추가
        StrBuilder.replace(1,5, "추가");
        System.out.println(StrBuilder);
        
    }