<aside> 💡 아무리 큰 배열이나 객체여도 메소드에 전달할 때는 참조 변수만 전달되기 때문에 전달시간이나 메모리를 절약할 수 있음

</aside>

객체가 전달되는 경우

객체를 메소드로 전달하게 되면 객체 자체가 복사되어 전달되는 것이 아니라,

객체의 참조값만 복사되어서 전달된다.

참조값이 매개 변수로 복사되면 메소드의 매개 변수도 동일한 객체를 참조하게 된다.

따라서 매개 변수를 통하여 객체의 내용을 변경하면 인수가 가리키는 객체도 변경된다.

<aside> 💡 매개 변수를 통하여 객체의 내용을 변경하면 인수가 가리키는 객체도 변경됨

</aside>

//피자 크기 비교하기
package ex05;

class Pizza {
    int radius;

    Pizza(int radius) {
        this.radius = radius;
    }

    Pizza whosLargest(Pizza p1, Pizza p2) {
        if (p1.radius > p2.radius) {
            return p1;
        } else {
            return p2;
        }
    }
}

public class PizzaTest {
    public static void main(String[] args) {
        Pizza obj1 = new Pizza(14);
        Pizza obj2 = new Pizza(18);

        Pizza largest = obj1.whosLargest(obj1, obj2);
        System.out.println(largest.radius + "인치 피자가 더 큼.");
    }
}

//18인치 피자가 더큼.

배열이 전달되는 경우

배열도 객체이기 때문에 배열 전체가 매개 변수로 들어가면 객체가 전달되는 것과 동일하게

배열을 가리키는 참조값이 복사되고 메소드에서 매개 변수를 통하여 배열을 변경하면

원본 배열이 변경된다.

//배열을 받아서 최소값을 계산하여 반환하는 메소드
package ex05;

public class ArrayArgumentTest {
    public static double minArray(double[] list) {
        double min = list[0];

        for (int i = 0; i < list.length; i++) {
            if (list[i] < min) {
                min = list[i];
            }
        }
        return min;
    }
    public static void main(String[] args) {
        double[] a = {1.1, 2.2, 3.3, 4.4, 0.1, 0.2};
        double[] b = {-2.0, 3.0, -9.0, 2.9, 1.5};

        double min;

        min = minArray(a);
        System.out.println("첫 번째 배열의 최소값 = " + min);
        min = minArray(b);
        System.out.println("두 번째 배열의 최소값 = " + min);
    }
}