코딩/Java

참조와 복제

복제 :

 

전자화된 시스템의 가장 중요한 특징은 복제다. 현실의 사물과 다르게 전자화된 시스템 위의 데이터를 복제 하는데는 비용이 거의 들지 않는다. 바로 이러한 특징이 소프트웨어를 기존의 산업과 구분하는 가장 큰 특징일 것이다. 프로그래밍에서 복제가 무엇인가를 살펴보자.

 

결과는 당연하다. 값을 변경한 것은 변수 b이기 때문에 변수 a에 담겨있는 값은 그대로이다. 변수 b의 값에 변수 a의 값이 복제된 것이다. 이를 그림으로 표시하면 아래와 같다.

 

https://opentutorials.org/course/1223/6339

 

new로 생성하는 자료형들은 참조 데이터형이다.

 

참조 : 

 

run value와 renReferenced의 놀라운 차이점이 있다. 변수 b에 담긴 인스턴스의 id 값을 2로 변경했을 뿐인데 a.id의 값도 2가 된 것이다. 이것은 변수 b와 변수 a에 담긴 인스턴스가 서로 같다는 것을 의미하다. 이것이 참조(reference)이다.

c언어의 포인터와 유사한 느낌이다.

 

그림 설명

기본데이터 타입(ex int)로 하게 되면 기본적으로 복제가 일어나기 때문에 a를 바꾸면 b에 영향을 주지 않는다.

그런데 new로 객체로 만드는 데이터 타입이 변수를 만들게 되면 그 변수들은 인스턴스에 참조값만을 (위치만을) 가지고 있기 때문에 a나 b를 하나라도 수정하면 같이 변경된다.

 

 

https://opentutorials.org/course/1223/6339

참조 데이터형과 매개변수 :

 

 

'코딩 > Java' 카테고리의 다른 글

Collections framework  (0) 2021.01.11
제네릭  (0) 2021.01.10
상수와 enum2  (0) 2021.01.09
상수와 enum  (0) 2021.01.08
object 클래스  (0) 2021.01.06