[Java] 기본형 매개변수와 참조형 매개변수

temprmn·2023년 5월 22일
0

🧒 Java 기초

목록 보기
6/9
post-thumbnail

기본형 & 참조형 매개변수

참고: 기본형 매개변수와 참조형 매개변수: 메서드 파라미터에 복사되는 값의 차이

기본형 매개변수 (primitive type)

변수의 값을 읽기만 할 수 있다. (read only)

매개변수의 타입이 기본형일 때는 값 자체가 복사되어 넘어가기 때문에, 매개값으로 지정된 변수의 원본 값이 변경되지 않는다.

class Example {
    int value;
}

class Main {
    public static void main(String[] args) {

		// 선언 및 초기화
        Example ex = new Example();
        ex.value = 77;
        // 초기 값 출력
        System.out.println("main() : value = " + ex.value);

		// 초기 값 출력 후 값을 바꿔본다
        // 객체가 아닌 객체의 필드를 전달했다
        change(ex.value);
        // 값을 바꾼 직후의 출력 (메서드 바깥)
        System.out.println("After change(ex.value)");
        System.out.println("main() : value = " + ex.value);

    }

	/* 값을 바꿔주는 역할을 하는 메서드 */
    static void change(int value) {
        value = 7000;
        // 메서드 내에서 값을 바꾼 직후의 결과 출력
        System.out.println("change() : value = " + value);
    }
}

아래의 결과를 보면 값이 바뀌지 않은 것을 확인할 수 있다.

main() : value = 77
change() : value = 7000
After change(ex.value)
main() : value = 77

참조형 매개변수 (reference type)

변수의 값을 읽고 변경할 수 있다. (read & write)

매개변수를 참조형으로 선언하면, 값이 저장된 곳의 원본 주소를 알 수 있기 때문에... 값을 읽어 오는 것은 물론이고, 값을 변경하는 것도 가능하다.

메서드의 매개변수 뿐만 아니라 반환타입도 참조형이 될 수 있다. (반환타입이 참조형이라는 것은 반환하는 값의 타입이 “실제값의 주소”라는 의미)

class Example {
    int value;
}

class Main {
    public static void main(String[] args) {

        // 선언 및 초기화
        Example ex = new Example();
        ex.value = 77;
        // 초기 값 출력
        System.out.println("main() : value = " + ex.value);

        // 초기 값 출력 후 값을 바꿔본다
        // 객체를 매개변수로 전달했다
        change(ex);
        // 값을 바꾼 직후의 출력 (메서드 바깥)
        System.out.println("After change(ex)");
        System.out.println("main() : value = " + ex.value);

    }

	/* 값을 바꿔주는 역할을 하는 메서드 */
    static void change(Example ex) {
        ex.value = 7000;
        System.out.println("change() : value = " + ex.value);
    }
}

아래의 결과를 보면 바꾸고자 하는대로 값이 바뀌었음을 확인할 수 있다.

main() : value = 77
change() : value = 7000
After change(ex)
main() : value = 7000

참조형 매개변수 응용

참조형 매개변수의 특징을 이용하면 아래와 같은 결과를 얻을 수 있다. 아래의 두 메서드는 같은 실행결과를 가진다.

int add(int a, int b) {

	return a + b;
}
void add(int a, int b, int[] result) {
	
    // 주소값을 가져오는 참조형 매개변수(int[])의 특징 활용
	result[0] = a + b; 
}
profile
`ISFJ` T 49% F 51% /

0개의 댓글