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. 마무리
기본형 매개변수는 값을 변경할 수 없지만 참조형 매개변수는 주소가 변경되는 것이기 때문에 값이 변경될 수 있음을 이해할 수 있었다.
'언어 기초 > JAVA' 카테고리의 다른 글
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 클래스 메서드와 인스턴스 메서드 (0) | 2024.01.18 |
---|---|
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 메서드로 배열 다루기 (0) | 2024.01.17 |
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 메서드 (0) | 2024.01.17 |
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 클래스변수와 인스턴스변수 (1) | 2024.01.16 |
[자바의정석 | Chapter 06 객체지향 프로그래밍1] 객체배열, 프로그래밍에서의 클래스 (0) | 2024.01.15 |