StringBuilder

조영민·2023년 5월 3일

java

목록 보기
20/24

자바에서 문자열 하면 String을 많이 떠올린다. 그런데 이 문자열에 새로운 문자를 더한다고 하면 어떻게 될까?

String a = "자바";
String b = "프로";
String c = "그래밍";
String result = b + c;   //프로그래밍
a += b += c;             //자바프로그래밍

String 객체끼리 더하는 방법은 메모리할당과 해제를 발생시키는데, 덧셈 연산이 많아지면 메모리 효율이 좋지 않다.

즉, 많은 문자열을 연결하면 많은 중간 문자열 객체가 생성되어 비효율적인 코드가 생성된다

자바에서 String 객체는 변경 불가능하다. 따라서 하나의 문자열과 다른 문자열을 연결하면 새로운 문자열이 생성되고, 이전 문자열은 가비지 컬렉터로 이동한다.

연산이 몇만번 수행된다고 가정하면 메모리 효율이 많이 떨어질 것이다.

이러한 메모리적 낭비 해결을 위해 사용할 수 있는 방법 중 하나가 StringBuilder이다.

StringBuilder는 String과 다르게 변경 가능한 문자열을 생성하기 때문에 문자열 합치는 작업 시 좋은 방법이 될 수 있다.

		char[] arr = new char[s.length()];
        for(int i = 0; i < s.length(); i++){
            arr[i] = s.charAt(i);
        }
        arr.toString();
        String answer = "";
        Arrays.sort(arr);
        for(int i = arr.length-1; i >= 0; i--){
            answer += arr[i];
        }
        return answer;
         
아래의 코드가 훨씬 효율적이다. String 문자열의 + 연산은 메모리적 낭비를 유발하기 때문이다.
        char[] arr = s.toCharArray();
        Arrays.sort(arr);
        return new StringBuilder(new String(arr)).reverse().toString();
profile
노젓는 개발자

0개의 댓글