본문 바로가기
JAVA

JAVA / 함수 호출방식 Call by value와 Call by reference

by LWM 2020. 5. 31.
반응형

*함수 호출방식

 

  • Call by value : 값에 의한 호출

    Call by value는 메소드 호출 시에 사용되는 인자의 메모리에 저장되어 있는 값을 복사하여 보낸다.
    예제를 살펴보자

-예시-

Class CallByValue{

	public static void swap(int x, int y) {

		int temp = x;

		x = y;

		y = temp;

	}



	public static void main(String[] args) {

		int a = 10;

		int b = 20;



		System.out.println("swap() 호출 전 : a = " + a + ", b = " + b);



		swap(a, b);



		System.out.println("swap() 호출 후 : a = " + a + ", b = " + b);

	}

}

 

-결과-

swap() 호출 전 : a = 10, b = 20

swap() 호출 후 : a = 10, b = 20

 

 

 

 

  • Call by reference : 참조에 의한 호출

    메소드 호출 시 사용되는 인자 값의 메모리에 저장되어있는 주소를 복사하여 보낸다.

-예시-

Class CallByReference{
	int value;



	CallByReference(int value) {

		this.value = value;

	}



	public static void swap(CallByReference x, CallByReference y) {

		int temp = x.value;

		x.value = y.value;

		y.value = temp;

	}



	public static void main(String[] args) {

		CallByReference a = new CallByReference(10);

		CallByReference b = new CallByReference(20);

		System.out.println("swap() 호출 전 : a = " + a.value + ", b = " + b.value);

		swap(a, b);

		System.out.println("swap() 호출 전 : a = " + a.value + ", b = " + b.value);

	}

}

 

-결과-

swap() 호출 전 : a = 10, b = 20

swap() 호출 후 : a = 20, b = 10
반응형

'JAVA' 카테고리의 다른 글

JAVA / composite  (0) 2022.08.01
JAVA / 가비지 컬렉션(garbage collection)  (0) 2020.05.31
JAVA / Calendar와 Date 그리고 java.time패키지  (0) 2020.05.30
Java / java.lang패키지  (0) 2020.05.30
JAVA / 예외처리(exception handling)  (0) 2020.05.28