728x90
반응형
안녕하세요. 스마트 팩토리입니다.
자바 중급 012. 참조형 매개변수(Reference Parameter) (2)에 대해 알아보겠습니다.
1. 참조형 매개변수
가. 참조형 매개변수(Reference Parameter)
- 매개변수의 값을 읽고 쓰기 즉 변경도 할 수 있는 매개변수
<<Var.java 클래스 >>
Var.java 클래스 내 멤버 변수와 멤버 메소드에서 매개변수가 참조변수가 됩니다. 참조 변수는 주소값을 가지고 있기 때문에 메소드에서 생성되는 지역변수에 해당 참조변수에 있는 멤버 변수의 주소값을 가지고 있어서 해당 값이 바뀌면 주소값에 있는 값도변경되게 됩니다. 그래서 읽는 것은 물론 변경 즉 쓰기까지 됩니다.
package ex02;
public class Var {
int x;
int y;
void change(Var a1) {
int temp=y;
y=x;
y=temp;
System.out.println("----change 메소드내에서 ---");
System.out.println(" main ( ) : x ="+ a1.x);
System.out.println(" main ( ) : y ="+ a1.y);
}
}
<<stVar.java 클래스 >>
a1.change(a1); Var 클래스내의 메소드를 적용한 하여 적용된 멤버 변수 값이 변경된 후에도 메인 메소드에서 변경된 것을 볼 수 있습니다.
change () 메소드의 인자값으로 참조형매개변수 a1 자체가 들어간 것이 포인트입니다.
객체 변수그 자체를 넣어서 실행하는 것이 매개변수입니다. 참조형이기 때문에 메모리의 주소값이 들어가게 됩니다. 그 결과 주소값에 해당하는 실제값이 변경되게 된다는 것입니다. 기본형 매개변수와 비교하여 차이를 이해하는게 중요합니다.
package ex02;
public class StVar {
public static void main(String[] args) {
Var a1=new Var();
a1.x=100;
a1.y=200;
System.out.println("----메인 메소드 change전 ---");
System.out.println(" main ( ) : x ="+ a1.x);
System.out.println(" main ( ) : y ="+ a1.y);
a1.change(a1);
System.out.println("----메인 메소드 change후 ---");
System.out.println(" main ( ) : x ="+ a1.x);
System.out.println(" main ( ) : y ="+ a1.y);
}
<< 메인 메소드 실행 값>>
출력 값에서 보듯이 change 메소드에서 변경된 값이 메인 메소드에서 멤버변수값과 동일합니다. 이는 참조형 매개변수가 인자값으로 되어 있어서 그렇습니다.
코드를 한번에 보면서 흐름을 파악하여 천천히 볼 수 있으면 그것으로 충분합니다.
728x90
반응형
'Java' 카테고리의 다른 글
자바 중급 014. 생성자 (constructor) 란? 생성자는 자동 초기화? 기본 생성자 (0) | 2021.08.27 |
---|---|
자바 중급 013. 메서드 오버로딩(overloading) 이란? (0) | 2021.08.27 |
자바 중급 011. 기본형 매개변수(Primitive Parameter) 와 참조형 매개변수(Reference Parameter) (1) (0) | 2021.08.24 |
자바 중급 010. 스택이란? , 콜스택(call stack) (0) | 2021.08.24 |
자바 중급 009. 인스턴스 메서드(instance method)와 정적 메서드(static method)의 생성과 호출 (0) | 2021.08.22 |
댓글