Leeyebin의 블로그

Call by Value vs Call by Reference 본문

프로그래밍/깜빡하는 것들

Call by Value vs Call by Reference

안되면될때까지 2017. 5. 16. 11:42

Call By Value : 값에 의한 전달

  • 기본 자료형은 저장하고 있는 값이 전달(복사) 된다.
  • 대입문 사용시 / 인자 전달 시 / 메서드 리턴 시


Call By Reference : 참조/주소에 의한 전달

  • 객체참조변수에 주소값을 대입하여 힙 영역에 존재하는 객체 참조
  • 포인터


public class CallTest {
//자바에서 reference type : 배열, class, interface
	public static void main(String[] args) {
		int x=3, y=4;
		int[] a={3}, b={4};
		CallTest test = new CallTest();
		test.changeVal(x, y);
		System.out.println(x + " " + y);
		test.changeRef(a, b);
		System.out.println(a[0] + " " + b[0]);
	}
	
	public void changeVal(int a, int b){//파라미터 타입이 primitive data type이면 call by value
		int temp = a;
		a = b;
		b = temp;
	}
	
	public void changeRef(int[] a, int[] b){//파라미터 타입이 reference data type이면 call by reference 방식으로 수행
		int temp = a[0];
		a[0] = b[0];
		b[0] = temp;
	}

}


'프로그래밍 > 깜빡하는 것들' 카테고리의 다른 글

[JAVA]추상클래스 vs 인터페이스  (0) 2017.04.13
java vs javascript  (0) 2017.02.12
overloading vs overriding  (0) 2017.02.12
Comments