Contents

Java
2013.12.28 09:27

3.3.5 값복사

조회 수 336 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


3.3.5 값복사

언어를 공부하다 보면 단순한 원리 하나를 알면 많은 것이 해결되는 경우가 있다. 값복사(Value Copy)라는 말이 그런 예에 해당하는 것 같다. 만약 값복사를 제대로만 알고 있었다면, 그리고 누군가가 값복사를 한번이라도 언급했더라면, 그렇게 많은 부분에 있어서 헤매지 않았을 것이다.

이번에는 값복사에 대해서 알아보자. 그리고 값복사와 매개변수가 어떠한 관련이 있는지에 대해서 학습해보자.

이해를 돕기 위해서 기본 데이터 타입의 값복사부터 시작하자. 기본 데이터 타입은 변수를 선언했을 때 변수의 선언과 동시에 메모리가 생성된다. 기본 데이터 타입은 우선 변수의 선언 자체가 메모리의 생성의 의미를 담고 있기 때문에 new 연산자를 사용하지 않아도 자동으로 메모리가 생성된다.

▒ 메모리의 생성
 
int a;

int a라고만 해도 메모리는 생성된다. 즉 4바이트의 메모리가 생성된 것이다. 묵시적으로 내부에서 메모리의 생성이 이루어지는 것이다. 그리고 a 자체는 메모리를 그대로 가리키게 되는 것이다. 이 개념은 모든 기본 데이터 타입(Primitive Data Type)에 적용되는 불변의 법칙이다.

기본 데이터 타입을 사용할 때 여러분이 주의할 것은 바로 기본 데이터 타입끼리의 할당에서 메모리의 값이 어떻게 복사되느냐의 문제이다.

다음과 같은 코드의 경우 할당의 기본 원리는 아주 단순하다.

▒ 값복사의 예
 
int a = 5;
int b;
b = a;

너무나 단순한 구문이지만 이것의 원리를 제대로 이해한다면 기본 데이터 타입뿐만 아니라 참조 타입까지 확장해서 생각할 수 있다. 위의 코드에서 a라는 메모리는 이미 생성되어 있다. 그리고 b라는 메모리 또한 생성된 상태이다.

마지막으로 a를 b에 할당하고 있다. 문제는 'b = a'라는 구문에서 어떻게 할당이 이루어지느냐의 문제이다. a에 들어 있는 5가 어떠한 원리에 의해서 할당되는 것일까?  PPT의 그림에서 그 해답을 찾아보기 바란다.

□ 값복사(Value Copy)란?
◇ 값복사란 두 개의 메모리가 존재하고 한쪽의 메모리에 들어 있는 값을 다른 쪽의 메모리로 그 값만을 복사하는 행위를 말한다.

메모리는 a, b 둘 다 존재한다. 선언을 했으니 기본 데이터 타입은 무조건적으로 메모리가 생성된다. 그리고 메모리가 둘 다 존재하는 상태에서, 'b = a'의 의미는 a의 메모리에 있는 값만을 다른 메모리 b로 값복사를 하겠다는 의미이다. 즉 b는 a에 있는 값만을 b의 메모리로 복사해 오는 것이다. 메모리가 둘 다 존재하는 상태에서 한쪽의 메모리에 들어 있는 값을 다른 쪽의 메모리로 복사하는 행위를 값복사(Value Copy)라고 한다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
56 Java 3.4.5 결론 IT장인 2013.12.28 343
55 Java 3.4.4 변수와 메서드의 분리와 결합 IT장인 2013.12.28 446
54 Java 3.4.3 변수와 메서드 결합의 의미 II IT장인 2013.12.28 386
53 Java 3.4.2 변수와 메서드 결합의 의미 I IT장인 2013.12.28 371
52 Java 3.4.1 클래스 내의 메서드 IT장인 2013.12.28 341
51 Java 3.3.7 값복사가 적용되는 곳 IT장인 2013.12.28 399
50 Java 3.3.6 값복사와 매개변수의 전달 IT장인 2013.12.28 460
» Java 3.3.5 값복사 IT장인 2013.12.28 336
48 Java 3.3.4 리턴과 매개변수 IT장인 2013.12.28 403
47 Java 3.3.3 메서드는 변수다. IT장인 2013.12.28 329
46 Java 3.3.2 메서드 IT장인 2013.12.28 314
45 Java 3.3.1 클래스의 구성요소 IT장인 2013.12.28 381
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6