본문 바로가기
IT

자바 매개변수 전달 시 기본형과 참조형 차이 - 이해를 돕는 예시로 살펴보기

by 카카오망고 2025. 5. 18.
반응형

목차

👉자바 매개변수 전달 시 기본형과 참조형 차이 확인하기

서론

자바에서 매개변수 전달 방식은 초보 개발자에게는 다소 혼란스러운 주제일 수 있습니다. 특히 기본형과 참조형 매개변수의 차이는 명확히 이해하고 넘어가야 할 중요한 개념입니다. 기본형 매개변수는 값 자체를 전달하는 반면, 참조형 매개변수는 객체의 주소를 전달합니다. 이로 인해 매개변수의 사용 방식에 있어 큰 차이가 발생합니다.

 

이번 포스팅에서는 자바 매개변수 전달 시 기본형과 참조형의 차이를 다양한 예시와 함께 살펴보고, 각 특징을 명확히 설명하여 이해를 돕고자 합니다. 이 과정을 통해 개발자 여러분이 자바 프로그래밍을 함에 있어 매개변수에 대한 이해도가 높아지기를 바랍니다.

기본형 매개변수란?

기본형 매개변수는 자바에서 기본 데이터 타입인 int, char, boolean 등을 포함한 값들을 직접 전달하는 방식입니다. 이 매개변수를 사용할 때는 메서드 호출 시 값이 복사되어 전달됩니다. 따라서 메서드 내에서 매개변수를 변경하더라도 원본 데이터에는 영향을 미치지 않습니다.

 

예를 들어, 다음과 같이 함수가 정의되어 있다고 가정해 보겠습니다:

 

void modifyValue(int number) {
    number = 100;
}

이 함수를 호출할 때, modifyValue(50)로 호출하면 number는 50으로 시작합니다. 그러나 modifyValue 함수 내에서 number의 값을 100으로 변경하더라도, 원본인 50은 변하지 않습니다. 이처럼 기본형 매개변수는 값의 복사본을 사용하기 때문에 원본이 안전하게 유지됩니다.

참조형 매개변수란?

참조형 매개변수는 객체나 배열과 같은 참조형 데이터 타입을 전달하는 방식으로, 메서드 호출 시 객체의 주소가 전달됩니다. 이는 메서드 내에서 객체의 속성을 변경할 수 있는 가능성을 제공합니다. 즉, 메서드에서 참조형 매개변수를 수정하면 원본 객체에도 영향을 미치게 됩니다.

 

예를 들어, 다음과 같은 함수를 살펴보겠습니다:

 

void changeName(Person person) {
    person.setName("홍길동");
}

이 함수를 호출할 때 changeName(person)으로 호출하면, person 객체의 name 속성이 "홍길동"으로 변경됩니다. 참조형 매개변수는 주소를 전달하기 때문에 원본 객체의 속성을 직접 수정할 수 있는 것입니다.

👉자바 매개변수 전달 시 기본형과 참조형 차이 바로가기

기본형과 참조형의 특징 비교

특징 기본형 매개변수 참조형 매개변수
전달 방식 값 복사 주소 전달
변경 가능성 불가능 가능
예시 데이터 타입 int, char, boolean 클래스, 배열 등

매개변수 전달 과정

매개변수의 전달 과정은 기본형과 참조형에 따라 다르게 진행됩니다. 기본형 매개변수의 경우, 메서드 호출 시 인자의 값을 복사하여 새로운 메모리 공간에 저장하게 됩니다. 반면, 참조형 매개변수는 해당 데이터가 저장된 메모리 주소를 전달하여, 같은 메모리 공간을 공유하게 됩니다.

  • 기본형: 메서드 호출 시 값 복사
  • 참조형: 메서드 호출 시 주소 전달

이러한 차이로 인해 결과가 다르게 나타나므로, 개발자는 매개변수의 유형을 적절히 선택하는 것이 중요합니다. 기본형으로 전달하면 안전하지만, 참조형을 활용하면 유연성을 확보할 수 있습니다.

실제 코드 예제

아래는 기본형과 참조형을 각각 사용하는 간단한 Java 코드 예제입니다.

 

public class Main {
    public static void main(String[] args) {
        int num = 10;
        modifyValue(num);
        System.out.println("기본형 결과: " + num); // 출력: 10

        Person person = new Person("이순신");
        changeName(person);
        System.out.println("참조형 결과: " + person.getName()); // 출력: 홍길동
    }

    static void modifyValue(int number) {
        number = 50;
    }

    static void changeName(Person person) {
        person.setName("홍길동");
    }
}

이 예제에서 기본형 매개변수인 num은 메서드 호출 후에도 원본 값이 그대로 유지되는 반면, 참조형 매개변수인 person은 메서드 호출 후에 변경된 점을 확인할 수 있습니다.

FAQ

Q: 기본형 매개변수는 언제 사용해야 하나요?

A: 기본형 매개변수는 값이 변하지 않는 것이 보장되어야 하는 경우에 사용하면 안전합니다. 예를 들어, 수학 계산과 같은 작업에 적합합니다.

Q: 참조형 매개변수를 사용하는 것이 항상 좋은가요?

A: 참조형 매개변수는 객체의 상태를 변경할 수 있는 유연성을 제공하지만, 원하지 않는 변경이 발생할 수 있습니다. 따라서 사용할 때는 주의가 필요합니다.

결론

자바에서 매개변수 전달 방식의 기본형과 참조형 차이를 이해하는 것은 성공적인 프로그래밍의 기초입니다. 기본형 매개변수는 값 복사로 안전하지만, 참조형 매개변수는 유연성을 제공합니다. 이 두 가지의 특징을 잘 이해하고 활용한다면, 보다 효율적이고 오류 없는 코드를 작성할 수 있을 것입니다.

 

이 포스팅이 자바 매개변수 전달 방식에 대한 명확한 이해를 돕는 데 도움이 되었기를 바랍니다. 추가적인 질문이나 궁금한 점이 있다면 언제든지 댓글로 남겨주시기 바랍니다. 감사합니다!

👉자바 매개변수 전달 시 기본형과 참조형 차이 확인하기
반응형