ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • String StringBuilder StringBuffer
    전공 지식/JAVA 2018. 12. 6. 16:29

    자바에서 스트링 세가지 종류!

    String StringBuilder StringBuffer


    에 대해 알아보겠다~


    결과만 보면 다음과 같다

     String

     StringBuilder

     StringBuffer

    Immutable

    Mutable 

     Mutable

    Synchronized

    Unsynchronized 

    Synchronized 


    Immutable 과 Mutable 의 차이는 무엇일까?


    Immutable (불변)

    : String 은 생성되면 그 메모리 공간은 절대 변하지 않는다.

    따라서 문자열을 바꿀 때, 새로운 메모리 공간을 할당하여 String 이 만들어지고 그 위치를 변수가 가리키게 되는 방식이다.

    문자열이 자주 바뀐다면 객체를 계속해서 새로 만들어야 하기 때문에 오버헤드가 발생할 가능성이 커진다.

    또 Garbage Collector 에 의해 delete 되어야한다.


    mutable (가변)

    : 메모리 공간의 크기가 변할 수 있음을 의미한다.

    StringBuilder,  StringBuffer 는 메모리 공간의 크기가 변할 수 있으므로 문자열이 바뀔 때 메모리 공간의 주소는 변하지 않고 크기가 줄어들었다 커졌다 한다.



    Synchronized (동기화)

    : MultiThread 환경일 때, 알아서 동기화가 된다.



    각각 언제 사용하면 좋을까?

    String : 값이 변경되지 않을때, 멀티 스레드 환경일 때


    StringBuilder : 값이 자주 변경될 때, 멀티 스레드 환경이 아닐 때


    StringBuffer : 값이 자주 변경될 때, 멀테 스레드 환경 일 때


    '전공 지식 > JAVA' 카테고리의 다른 글

    Interface  (0) 2020.07.23
    Heap 영역 Detail / Garbage-Collection  (0) 2020.07.13
    interface 간 상속 및 다중 상속  (0) 2018.12.05
    Final 변수, 함수, Class  (0) 2018.12.05
    Static class Member Method, Variables  (0) 2018.12.05

    댓글