Java 객체지향

'Call by reference' 그리고 'Call by value'

아규먼트 전달 방식에 두 가지 방식이 있는데 이는 call-by-value와 call-by-reference다.

자바는 언제나 Call-by-value방식이다!(단, 자료형 따라 함수호출방식 달라짐 주의)

 

Call-by-value(값에 의한 호출)

함수로 인자를 전달할 때 전달될 변수의 값을 복사하여 함수의 인자로 전달한다.

복사된 인자는 함수 안에서 지역적으로 사용되는 local value의 특성을 가진다.

그래서 함수 안에서 인자의 값이 변경되어도 외부의 변수의 값은 변경되지 않는다.

함수가 호출될때 메모리 공간엔 함수를 위한 별도의 임시 공간(heap)이 생성된다. 함수가 종료되면 해당 공간은 사라진다.

자바에서는 함수에 전달되는 인자의 데이터 타입에 따라서 함수호출방식이 달라진다.

-Primitive type: Call-by-value로 호출(int, short, long, float, double, char, boolean)

-Reference type: Call-by-reference로 호출(그 외_Array, Class, Instance)

 

 

Call-by-reference(인자에 의한 호출)

함수로 인자를 전달할 떄 전달되는 변수의 레퍼런스를 전달한다.(해당 변수를 가리킨다)

그래서 함수 안에서 인자의 값이 변경되면 인자로 전달된 객체의 값도 함께 변경된다.

 

 

 

'Java 객체지향' 카테고리의 다른 글

[Java][객체지향] 인터페이스  (0) 2019.05.30
[Java][객체지향] 객체의 초기화  (0) 2019.05.30