ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA - Mutable, Immutable
    CS/Java 2021. 2. 18. 21:18

    Mutable, Immutable


    Immutable: String

    • 문자열 연산에서 new 연산을 통해 생성된 인스턴스의 메모리 공간을 절대 변하지 않는다.

    • 문자열에 변화를 주면 메모리 공간이 변하는 것이 아닌 새로운 String객체를 new로 만들어서 새로운 메모리 공간을 만들어 준다. 
    • 기존의 문자열은 GC에 의해 제거되어야 한다.

     

    Mutable: Stringbuilder, Stringbuffer

    • 문자열 연산에서 클래스를 한번 만들고 연산이 필요할 때 크기를 변경시켜 문자열을 변경한다.

    • 문자열 연산이 자주 있을때 사용하는 것이 적절하다.

     

    String

    • 문자열 연산이 적고, 조회가 많을때 사용한다.

    • 불변성을 가지기 때문에 멀티쓰레드 환경에서의 안정성을 가지고 있다.
    • 즉, 문자열 연산이 적고 멀티쓰레드 환경일 경우 사용하는 것이 적절하다.

     

    Stringbuilder

    • 동기화를 지원하지 않는다.
    • 싱글 쓰레드 환경이거나 쓰레드를 신경 쓰지 않아도 되는 상황이면 Stringbuilder를 사용하는 것이 적절하다.
    • 즉, 문자열 연산이 많고 단일스레드이거나 동기화를 고려하지 않아도 되는 경우 사용하는 것이 적절하다.

     

    Stringbuffer

    • 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다.
    • 즉, 문자열 연산이 많고 멀티쓰레드 환경일 경우 사용하는 것이 적절하다.

     

     

    reference

    ifuwanna.tistory.com/221

    'CS > Java' 카테고리의 다른 글

    JAVA - 객체 직렬화  (0) 2021.02.19
    JAVA - final  (0) 2021.02.19
    JAVA - foreach  (0) 2021.02.18
    JAVA - 오버로딩, 오버라이딩  (0) 2021.02.18
    JAVA - 인터페이스와 추상클래스  (0) 2021.02.18

    댓글

Designed by Tistory.