상세 컨텐츠

본문 제목

[자바 CS지식] Call By Reference와 Call By Value의 차이점

JAVA

by 소란한소란 2024. 2. 11. 22:03

본문

728x90

제목: Java에서의 인자 전달 방식: Call By Value vs. Call By Reference


소개: 자바 프로그래밍에서는 함수 호출 시 인자를 전달하는 방식에는 두 가지 주요한 패턴인 Call By Value와 Call By Reference가 있습니다. 이 블로그에서는 두 방식의 차이와 각각의 특징을 살펴보겠습니다.


 

1. Call By Value (값에 의한 호출):

  • 개념: 함수로 인자를 전달할 때, 변수의 값이 복사되어 전달되는 방식입니다.
  • 예시: 자바에서는 기본 데이터 타입(primitive types)을 사용할 때 주로 발생합니다.
  • 특징: 호출된 함수에서 인자 값이 변경되어도 호출한 측의 변수 값에는 영향을 주지 않습니다.

예를 들어 코드로 살펴봅시다.

 

public class Main {
    public static void main(String[] args) {
        int num = 10;
        changeValue(num);
        System.out.println(num); // 출력 결과: 10
    }

    public static void changeValue(int x) {
        x = 20;
    }
}

 


 

2. Call By Reference (참조에 의한 호출):

  • 개념: 함수로 인자를 전달할 때, 변수의 참조(주소)가 전달되는 방식입니다.
  • 예시: 객체(Object)를 사용할 때 주로 발생하며, 자바에서는 Call By Reference와 유사한 효과를 얻을 수 있습니다.
  • 특징: 호출된 함수에서 인자의 값이 변경되면 호출한 측의 변수 값도 함께 변경됩니다.

예를 들어 코드로 살펴봅시다.

 

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        changeValue(sb);
        System.out.println(sb); // 출력 결과: "World"
    }

    public static void changeValue(StringBuilder str) {
        str.append(" World");
    }
}

 


 


결론: Java에서의 인자 전달 방식은 기본 데이터 타입일 때는 Call By Value가 적용되고, 객체를 다룰 때는 Call By Reference와 유사한 효과를 얻을 수 있습니다. 이러한 차이를 이해하면 함수 호출 시 인자의 동작 방식을 더욱 명확하게 이해할 수 있으며, 코드를 더 효과적으로 작성할 수 있습니다. 호출되는 함수와 호출한 함수 간의 인자 전달 방식을 고려하는 것은 자바 프로그래밍에서 중요한 측면 중 하나입니다.

 

728x90

관련글 더보기