📌📌📌1. 기본형 매개변수(중요)
- 변수의 값을 읽기만 할 수 있다.(read only)
- call by value 방식(값을 전달)
- data의 값에 의한 호출
- data에 직접적으로 영향을 줄 수 없다.
- 기본형(int,double.. 등)을 매개변수로 활용
📌📌📌2. 참조형 매개변수(중요)
- 변수의 값을 읽고 변경할 수 있다
- call by reference 방식(객체 참조 주소 전달
- data의 메모리 주소에 의한 호출
- data에 직접적으로 영향을 줄 수 있다.
- 객체, 배열을 매개변수로 활용
예시
class Data {
int kor;
int eng;
int math;
// call by reference // 배열, 객체를 넘겨주면 reference // 메소드에서 바뀐값이 다른곳에서도 유효하다.
void addRef(Data d1, Data d2) { //매개변수가 나의 객체인것
d1.kor = d2.eng;
System.out.println("call by reference addRef Method 국어 점수 : " + d1.kor);
}
//call by value //기본형 매개변수를 넘겨주면 메소드 내에서만 영향을 준다
void addValue(int kor, int eng) {
kor = eng;
System.out.println("call by value addValue Method 국어점수 : "+ kor);
}
}
public class DataEx {
public static void main(String[] args) {
Data d1 = new Data();
Data d2 = new Data();
Data d3 = new Data();
d1.kor = 50;
d1.math = 70;
d2.eng = 80;
//Instance를 넘겨주면 주소값을 넘겨주는 효과
System.out.println("1. call by referencer After ");
d3.addRef(d1, d2);
System.out.println("Main 국어점수 :" + d1.kor);
System.out.println("2. call by value After ");
d3.eng = 55;
d3.kor = 70;
d3.addValue(d3.kor, d3.eng); // 메소드에서 변경된 값
System.out.println("Main 국어점수 : "+ d3.kor);// 위에 메소드에서는 변경됬지만 원래 기본값은 변경되지 않는다.
}
}
- call by referencer After
call by reference addRef Method 국어 점수 : 80
Main 국어점수 :80
- call by value After
call by value addValue Method 국어점수 : 55
Main 국어점수 : 70