StringBuilder 사용법

이정연·2023년 6월 19일

자바기초

목록 보기
7/25

기존 방법의 문제

  • 한번 생성된 String 클래스의 인스턴스는 여러개의 문자열을 더할 때 매번 새로운 인스턴스를 생성해야한다.

  • String은 변경 불가능한 문자열을 생성한다.

  • 이렇게되면 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지컬렉터로 들어가게 된다는 뜻이다.

  • 결국 100만개의 문자열을 연결해야 하는 상황에서는 기존 문자열 값의 길이에 추가된 문자열의 크기를 더한 크기의 새로운 문자열이 생성된다. 이걸 100만번 수행하게된다.

  • 결과적으로 메모리를 어마어마하게 잡아먹게된다.

public class Main {
	public static void main(String[] args){
		String str1 = "프로그래밍 - ";
		String str2 = "자바";
		String str3 = "안드로이드";
		String result = str2 + str3;
		str1 += str2 += str3;
		System.out.println(result);
		System.out.println(str1);
	}

}
// > 자바안드로이드
// > 프로그래밍 - 자바안드로이드

결론 : StringBuilder

  • 변경 가능한 문자열을 만들어준다.
public class Main{
    public static void main(String[] args){
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("문자열 ").append("연결");
        String str = stringBuilder.toString();
        // 두 println()은 같은 값을 출력한다
        System.out.println(stringBuilder);
        System.out.println(str);
    }
}

먼저 StringBuilder의 객체를 생성한 후, append()의 인자로 연결하고자 하는 문자열을 넣어서 StringBuilder의 객체를 통해 호출합니다.

반복문에 적용 예시

public class Main{
    public static void main(String[] args){
        StringBuilder stringBuilder = new StringBuilder();
        ArrayList<String> list = new ArrayList<>();
        list.add("첫 번째, ");
        list.add("두 번째, ");
        list.add("세 번째, ");
        list.add("네 번째, ");
        list.add("다섯 번째");
        for (int i = 0; i < list.size(); i++)
        {
            stringBuilder.append(list.get(i));
        }
        System.out.println(stringBuilder);
    }
}
// >> 첫 번째, 두 번째, 세 번째, 네 번째, 다섯 번째

ref : https://onlyfor-me-blog.tistory.com/317

profile
반갑습니다.

0개의 댓글