뇌운동일지

[JAVA09] call by value VS call by reference 본문

JAVA

[JAVA09] call by value VS call by reference

purpleduck 2020. 3. 16. 15:53

call by value

public int add(int a, int b) {
	return a+b;
}

함수영역 (가인자)

int a = 10;
int b = 20;
add(a,b);

호출영역 (실인자)

 

실인자를 가인자에 복사해줌 (stack복사)

return한다 : 함수가 종료되면서  return값을 돌려준다 

{} : 영역을 나누는 기호 

 

함수를 호출하는 방법 

Call by value 

호출 -> 함수 

값으로 -> 인자가 기본형 

call by value는 실인자가 변경되어도 가인자에 영향이 없다. 

-> 실인자가 변경되면 가인자에 영향이 있는 것은 call by reference

----------------------------------------------------------------------------------------------------------

Call by reference 

호출, 참조값으로 

호출 -> 메소드 

참조값? 기본형 변수가 아니다. 인자가 객체다. 

가인자를 바꾸면 실인자도 같이 바뀜

 

객체형 인자 

객체를 인자로 줌 -> hashcode 전달 ( 간접주소 값 ), address는 JVM이 가지고 있음 

실인자가 가인자에 hashcode를 줌 

-------------------------------------------------------------------------------------------------------------------------

JAVA에서 호출할 때 2가지 

: call by value, call by reference

 

call by value : 가인자가 바뀌어도 실인자에 영향이 없다 

call by reference : 가인자를 바꾸면 실인자 값도 바뀐다 

Comments