EEALL@ONCE

☕ 원시형 매개변수 vs 참조형 매개변수 본문

언어💻/자바☕

☕ 원시형 매개변수 vs 참조형 매개변수

올엣원스 2023. 8. 17. 09:21
728x90

원시형 매개변수(Primitive Parameters)와 참조형 매개변수(Reference Parameters)는 자바에서 메서드 호출 시 매개변수를 전달하는 두 가지 방법입니다.

1. 원시형 매개변수 (Primitive Parameters): 원시값은 '복사해서' 가져옴
   - 원시 자료형 (예: int, float, double 등)으로 선언된 매개변수를 전달할 때 사용됩니다.
   - 메서드로 전달된 값은 메모리에 복사되어 저장됩니다.
   - 메서드 내부에서 해당 매개변수의 값을 변경하더라도 원래 변수에는 영향을 미치지 않습니다.

   public static void modifyValue(int value) {
       value = 10;
   }

   public static void main(String[] args) {
       int originalValue = 5;
       modifyValue(originalValue);
       System.out.println(originalValue); // 출력: 5
   }



2. 참조형 매개변수 (Reference Parameters): 참조값은 주소값이므로 원본 그 자체를 가리킴
   - 객체 또는 배열과 같은 참조 자료형을 전달할 때 사용됩니다.
   - 메서드로 전달된 객체의 참조(주소)가 전달됩니다.
   - 메서드 내부에서 해당 매개변수의 값을 변경하면 원래 객체에도 영향을 미칩니다.

   public static void modifyArray(int[] array) {
       array[0] = 10;
   }

   public static void main(String[] args) {
       int[] originalArray = {5, 6};
       modifyArray(originalArray);
       System.out.println(originalArray[0]); // 출력: 10
   }



효율성 

원시형 매개변수:
  - 메모리 복사로 인해 추가 오버헤드가 발생할 수 있으나, 원본 데이터에 영향을 미치지 않으므로 안전하게 사용할 수 있습니다.


참조형 매개변수:
  - 객체의 참조를 전달하므로 메모리 효율성이 높을 수 있습니다.
  - 메서드 내부에서의 변경이 원본 객체에 영향을 미치므로 주의가 필요합니다. (SIDE EFFECT가 있을 수 있음)

728x90