immutable
-
CS) Mutable,Immutable2023.02.08
CS) Mutable,Immutable
2023. 2. 8. 17:50
728x90
사전적 의미
immutable: 불변의 mutable: 변할수 있는
Immutable, Mutable
Immutable이란 객체의 수정을 허용하지 않는다. 즉 이미 존재하는 객체이더라도 새로운 객체를 생성하여 재할당 한다.
Mutable이란 객체가 생성된 이후 수정이 가능하며, 이미 존재하는 객체에 재할당(값 변경)한다.
Immutable의 예로 String class가 존재한다.
String text = "kimchi";
System.out.println("text = " + text);
text = "delicious";
System.out.println("text = " + text);
//result
// text = kimchi
// text = delicious
위 코드에서 text = "delicious"에 의해 text는 새로운 객체를 할당받아 값이 바뀐것이다.
반면 아래와 같이 String이 아닌 StringBuilder를 통해 객체를 만든다고 가정해보자.
StringBuilder text = new StringBuilder();
text.append("Hello");
text.append("World");
System.out.println("text = " + text);
//result
// text = HelloWorld
이때는 append를 통해 text에 새로운 문자열을 추가한다. -> 문자열을 추가할때마다 객체가 재할당 되는 형태가 아니다.
Immutable, Mutable 특징
Mutable과 Immutable을 정리해보자면 다음과 같다.
Immutable | Mutable |
---|---|
생성된 이후 수정이 불가능하며 값변경시 새로운 객체를 할당받는다. | 생성된 이후 수정이 가능하며 이미 존재하는 객체에 재할당(값을 변경)한다. |
값을 변경할수 있는 메소드를 제공한다(위에서 .append) | 값을 변경할수 있는 메소드를 제공하지 않는다. |
Wrapper Class, String Class.. | StringBuffer,StringBuilder.. |
병렬 프로세스나 쓰레드에 안전하다. | 병렬 프로세스나 쓰레드 사용시 값을 보장하지 못한다. |
Reference
- Java의 Mutable과 Immutable https://velog.io/@guswlsapdlf/Java%EC%9D%98-Mutable%EA%B3%BC-Immutable
- [JAVA] mutable, immutable https://cdy0510.github.io/2018/05/10/mutable-immutable/
728x90
'CS' 카테고리의 다른 글
CS) Function,Predicate (0) | 2023.02.08 |
---|---|
CS) Functional Programming (0) | 2023.02.08 |
CS) Tokenizer,Lexer,Parser (0) | 2023.02.08 |
CS) DOM (0) | 2023.02.08 |
CS) HTML,XML (0) | 2023.02.08 |