[개념 학습 및 정리] Call By Value, Call By Reference

2021. 1. 15. 17:43코딩 테스트/개념 학습 및 정리

1. Call By Value

Call By Value는 값에 의한 호출로 메서드 호출 시 사용되는 인자의 메모리에 저장되어 있는 값을 복사하여 보내는 방법이다.

 

 

 

2. Call By Reference

Call By Reference는 메서드 호출 시 사용되는 인자 값의 메모리에 저장되어 있는 주소를 복사하여 보내는 방법이다. 주소를 넘기는 습관은 가능하면 피하는게 좋으며 함수 사이의 완벽한 분업을 추구하는 것이 좋다. 완벽하게 분업이 되도록 함수를 디자인하는 것이 좋다. 물론 상황에 맞게 함수의 역할만 제대로 정의되고 그 정의를 벗어나지 않는다면 은 코드가 될 수 있다.

 

 

 

3. Swap

Call By Value와 Call By Reference의 대표적인 예로는 Swap 로직이 있다. Swap 로직은 두 개의 값을 서로 바꾸어 주는 역할을 수행한다. 즉, 인자의 값을 복사하여 사용하느냐 주소를 복사하여 사용느냐에 따라 다르다. Java는 기본적으로 Call By Value 호출 방식이지만 Call By Reference도 가능하다.

 

Call By Reference에 대한 구현은 다음과 같다.

public class Difference {
  int value;
  
  Difference(int value) {
    this.value = value;
  }
  
  public static void swap(Difference one, Difference two) {
    int temp = one.value;
    one.value = two.value;
    two.value = temp;
  }
  
  public static void main(String[] args) {
    Difference a = new Difference(10);
    Difference b = new Difference(20);
    
    swap(a, b);
  }
}

 

728x90