immutable객체 : 생성된 뒤로 값을 변경할 수 없는 객체 (ex. String)
mutable객체 : 생성된 뒤로 값이 변경될 수 있는 객체 (ex. StringBuilder)

객체를 공유해서 사용할 때 보통 객체의 참조값을 주고받는데, 참조값을 갖게 되면 실제로 저장된 값 변경이 가능함

immutable객체는 값이 변경되지 않기 때문에 멀티스레드 환경에서 유용함

여러 스레드들이 객체의 값에 접근하더라고 값이 변경될 위험이 없어서 상호 배재를 신경 쓸 필요가 없음

mutable객체는 참조를 복사에서 가져갈 수 있기때문에 그 참조값으로 값을 얼마든지 변경이 가능함

 


immutable객체인 String 에 대한 값을 변경하면 새로운 객체를 만들어서 변경된 값을 저장하므로 원본 값은 변경되지 않음 -> 멀티스레드 환경에서 원본 값 보장
(메모리를 추가로 사용, 원본 값과 변경된 값은 참조값이 다름)

mutable객체인 StringBuilder는 새로운 객체를 만들지 않고 원래 객체의 값을 변경해버림 (참조를 복사함, 메모리를 추가로 사용하지 않음)

 

String을 사용하면 String객체에 변경이 일어난 횟수만큼 매번 새 객체를 만들어 메모리를 사용하기 때문에, 변경이 자주 필요한 경우 String대신 StringBuilder를 사용하는 것이 시간과 메모리를 절약할 수 있음

'JAVA > java' 카테고리의 다른 글

형변환  (0) 2021.02.28
Comparator, Comparable  (0) 2021.02.28
Java 날짜 유효성(포멧) 체크  (1) 2020.07.14
toString()  (0) 2020.04.20
hashCode()  (0) 2020.04.20