일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 에스가든스냅
- minimalAPI
- LINQ
- mac
- intellij
- 코드프로그래머스
- c#
- ViewModel
- .net
- ORM
- EFCore
- lazy loading
- vscode
- error
- Config
- 스냅잘찍음
- Store
- 라도무스dvd
- Request
- JSON
- extraParams
- dbContext
- 상속
- scanner
- c#코딩의기술실전편
- JavaScript
- extjs
- 대전본식영상
- React
- 명시적외래키
- Today
- Total
ejyoo's 개발 노트
mutable 과 immutable 본문
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();
위와 같다고 할 수 있습니다.
'공통' 카테고리의 다른 글
요청에 대한 응답 코드 목록 (0) | 2023.05.27 |
---|---|
[JSP] 윈도우 웹소켓 내 IP 설정 (0) | 2021.05.03 |
[Map, enum] 의식의 흐름이랄까? (0) | 2021.03.08 |