ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • StringBuilder
    프로그래밍/Java 2021. 8. 21. 23:08

    1. StringBuilder 란


    StringBuilder Class represents a mutable string of characters.
    StringBuilder 클래스는 문자의 가변 문자열을 나타냅니다.

     

     

     

    2. String vs StringBuilder 비교


    String 의 경우 불변(immutable) 이기 때문에 문자열을 계속해서 추가할 경우 (이어 붙이는 경우) 기존의 문자열과 새로운 문자열을 합한 만큼의 새로운 크기의 문자열을 생성하고, 기존 문자열과 새로운 문자열들을 한자 한자 씩 가져다 복사하는 비효율적인 방법을 사용하고 있다. 

    String joinWords (String[] words) {
    	String sentence = "";
        for (String w : words) {
        	sentence = sentence + w;
        }
        return sentence; 
    }

     

    StringBuilder 를 이용하면 클래스 안에 배열 공간을 미리 만들어놓고, append 함수가 호출되면 추가되는 문자열을 해당 배열 공간에 바로 추가할 수 있기 때문에 속도, 공간 측면에서 효율적으로 처리할 수 있다. 

    ( StringBuilder 에서의 복사는 내부적으로 생성한 배열 공간이 가득 찼을때 배열 공간을 늘려주는 작업만 진행하면 된다. )

    String joinWords (String[] words) {
    	StringBuilder sentence = new StringBuilder();
        for (String w : words) {
        	sentence = sentence.append(w);
        }
        return sentence.toString(); 
    }

     

     

    3. StringBuilder vs StringBuffer 


    StringBuilder 

    - 동기화 보장을 하지 않는다. 

     

    StringBuffer   

    - 동기화를 보장하기 때문에 멀티쓰레드 환경에 적합하다. (TreadSafe) 
    - 그렇기 때문에 Builder 보다는 속도가 느리다는 것이 단점이다. 

     

     

     

    4. Script


    String 의 경우 불변이기 때문에 문자열을 계속해서 추가할 경우

    기존 문자열 + 새로운 문자열을 합한 만큼의 새로운 크기의 문자열을 생성하고, 

    기존 문자열 + 새로운 문자열들을 한자 한자씩 가져다 복사하는 비효율 방법을 사용한다. 

     

    StringBuilder 는 클래스 안에 배열 공간을 미리 만들어두기 때문에 append 함수가 호출되면 문자열을 해당 배열공간에 바로 추가할 수 있기 때문에 속도, 공간 측면에서 효율적으로 처리할 수 있다.
    마지막 toString() 으로 출력을 할 시에는 배열에서 사용하고 있는 문자까지만 자른 후에 출력을 진행한다.

     

    그리고 많이 비교되는것이 StringBuilder 와 StringBuffer 인데, Buffer 의 경우 동기화를 지원하기 때문에 멀티쓰레드 환경에 적합한반면 속도가 느리고 Builder 의 경우에는 동기화를 지원하지 않다는 차이가 있다.

    '프로그래밍 > Java' 카테고리의 다른 글

    JVM 구조  (0) 2022.04.30
    JDK, JRE, JVM 이해하기  (0) 2022.04.29
    Java 8 Funtional 스터디  (0) 2021.09.23
    Inner class 정리  (1) 2021.09.10
    Interface  (0) 2021.08.22
Designed by Tistory.