ejyoo's 개발 노트

mutable 과 immutable 본문

공통

mutable 과 immutable

ejyoovV 2021. 4. 13. 16:59

mutable 과 immutable

간단하게 설명하면 mutable은 변경이 가능하고 immutable은 변경이 불가능합니다.

즉 상태를 변경할 수 있고 없고의 차이가 있습니다.

 

 

뮤터블(Mutable)클래스

 

인스턴스가 생성된 후에 값의 내용이 변할 수 있는 클래스, 주소는 못 바꾼다. ex) String 을 제외한 참조타입변수

 

이뮤터블(Immutable)클래스

 

그 클래스의 인스턴스가 일단 생성된 후에는 인스턴스의 내용이 절대 변하지 않는 특징을 갖는 클래스


(=로 다시 받기 전에는 바뀌지 않는다.) ex) int 등의 기본타입들 and String

 

ex)

 

int a = 10;

int b = a; // copy by value (단지 값만 복사, 연관 없다.)

b = 10;

 

System.out.println(a); ==> ""10
Student st1 = new Student("홍길동",24);
Student st2 = 
st1; // copy by reference(참조 값이 복사된다.) - 다른 곳에서 바꾸면 같이 바뀐다.

 

- pass by value지만 pass by reference처럼 사용할 수 있는것.
- call by value, pass by value 복사본을 넘긴다. (JAVA)
pass by reference (JAVA는 없다)

String s = "hello";
String s = s + 1 + 2   hello3
String s = 1 + 2 + s   3hello


String은 이뮤터블하기 때문에(값을 못 바꾸기 때문에) 새로 수정 할때 마다, 기존 메모리를 버리고 새로운 메모리에 값을 넣어서 연결합니다.

 

추가로 글에서 많이나오는 인스턴스에 대해서 알아보겠습니다!

인스턴(instance)란 ?

 

 인스턴스(instance)는 쉽게 설명하자면 비슷한 성질을 가진 여러개의 객체를 만들기 위해서 생성자 함수(Constructor)를 만들어 찍어내듯이 사용하는데 이렇게 생성된 객체를 인스턴스라고 부를 수 있습니다. 

객체지향언어에서 흔히 사용되는 클래스(Class)가 자바스크립트에서는 프로토타입(prototype)이며 생성자 함수가 사용됩니다. 다시 말하면 클래스나 프로토타입을 사용하여 만들어 낸 것이 인스턴스라고 볼 수 있고 간단한 예를 들어보면

 

Android -> String a = new String();

 

JavaScript -> var jb = new Object();

 

위와 같다고 할 수 있습니다.

 

hun-developer.tistory.com/2

 

mutable 과 immutable

mutable 과 immutable 간단하게 설명하면 mutable은 변경이 가능하고 immutable은 변경이 불가능합니다. 즉 상태를 변경할 수 있고 없고의 차이가 있습니다. 뮤터블(Mutable)클래스 인스턴스가 생성된 후

hun-developer.tistory.com

 

'공통' 카테고리의 다른 글

요청에 대한 응답 코드 목록  (0) 2023.05.27
[JSP] 윈도우 웹소켓 내 IP 설정  (0) 2021.05.03
[Map, enum] 의식의 흐름이랄까?  (0) 2021.03.08