본문 바로가기

언어 기초/JAVA

[자바의정석 | Chapter 06 객체지향 프로그래밍1] 매개변수

1. 학습목표

매개변수에 대해 이해할 수 있다.

2.필요 개념 문장정리

기본형 매개변수와 참조형 매개변수

  • 매개변수의 타입이 기본형일 때는 기본형 값이 복사되지만 참조형이면 인스턴스의 주소가 복사된다.
  • 메서드의 매개변수를 기본형으로 선언하면 단순히 저장된 값만 얻지만 참조형으로 선언하면 값이 저장된 곳의 주소를 알 수 있기 때문에 값을 읽어오는 것은 물론 값을 변경하는 것도 가능하다.

 3. 코드작성

class Data { int x; }

class ReferenceParamEX {
	public static void main(String[] args) {
    	Data d = new Data();
        d.x = 10;
        System.out.println("main() : x = " + d.x);
        
        change(d);
        System.out.println("After change(d)");
        System.out.println("main() : x = " + d.x);
    }
    static void change(int x) { // 기본형 매개변수
    	x = 1000;
        System.out.println("change() : x = " + x);
    }
	static void change(Data d) { // 참조형 매개변수
    	d.x = 1000;
        System.out.println("change() : x = " + d.x);
    }
}

실행결과
main() : x = 10
change() : x = 1000
After change(d)
main() : x = 10
main() : x = 1000

 

  • d.x의 값이 변경된 것이 아니라 change메서드 매개변수 x의 값이 변경된 것이다.
  • 기본형 매개변수는 변수에 저장된 값만 읽을 수 만 있을 뿐 변경할 수는 없다.
  • d.x값이 호출후에 변경된 경우 change메서드의 매개변수가 참조형이라서 값이 저장된 주소를 change메서드에게 넘겨주었기때문에 값을 읽어오는 것뿐만 아니라 변경도 가능하다.
  • main메서드의 참조변수 d와 change메서드의 참조변수 d는 같은 객체를 가리키게 된다. 그래서 매개변수 d로 x의 값을 읽는 것과 변경하는 것이 모두 가능하다. 

4. 마무리

기본형 매개변수는 값을 변경할 수 없지만 참조형 매개변수는 주소가 변경되는 것이기 때문에 값이 변경될 수 있음을 이해할 수 있었다.