Immutable,mutable

ryh0629·2022년 7월 1일
0

immutable(불변) 객체

  • 불변, 변할 수 없다는 뜻
  • 원시타입
  • 해당 데이터 주소와 별개의 새로운 주소에 값이 할당

immutable 객체의 종류에는 대표적으로 String, Boolean, Integer, Float, Long 등이 있다.

(객체이므로 String을 제외하면 primitive의 래퍼타입이다).

이제 immutable 객체의 불변이라는 개념을 자세히 보면,

new 연산자로 객체를 생성하면 heap영역에 객체가 생기고 래퍼런스 값을 가지는 변수가 stack에 생길 것이다. 불변 객체라는 것은 이 객체의 값을 heap 영역에서 바꿀 수 없다는 뜻이다.



mutable(가변) 객체

  • 변할 수 있다는 뜻
  • 참조 타입
  • 해당 데이터 주소를 찾아서 값을 변경함

mutable객체는 불변객체와 다르게 heap영역에 생성된 객체를 변경 할 수 있다.

대표적인 가변 객체는 List, ArrayList, HashMap,StringBuilder,StringBuffer 등이 있다.

가변객체를 multi-thread 환경에서 사용하려면 별도의 동기화 처리를 해줘야한다.

이렇게 동기화 처리된 객체중 하나가 StringBuffer이다.



Array,String Method -

immutable

  • Array.concat()
  • String.slice()
  • String.replace()
  • String.split()

mutable

  • Array.splice()
  • Array.unshift()
  • Array.shift()
  • Array.push()
  • Array.pop()
profile
developer

0개의 댓글