매개변수
- 메소드를 호출해서 객체간 메시지가 전달될 때 부가 정보가 필요한 경우 매개변수 형태로 전달한다.
- 매개변수로 전달되는 데이터에 따라 동작 방식이 달라진다.
- 기본형일 경우 Call-by-value, 참조형인 경우 Call-by-reference 방식으로 전달된다.
값에 의한 호출(Call-by-value)
1. 매개변수의 타입이 기본형인 경우
2. 변수의 주소가 아닌 값을 복사해서 매개변수로 전달한다.
3. 실제 매개변수 값은 영향을 받지 않는다.
public class CallBy {
public static void main(String[] args) {
// TODO Auto-generated method stub
int m1 = 5;
System.out.println("변경전 : " + m1); //5
changeNum(m1);
System.out.println("변경후 : " + m1); //5
}
public static void changeNum(int m1) {
m1 += 1000;
}
}
주소에 의한 호출(Call-by-reference )
1. 매개변수의 타입이 참조형(배열, 객체)인 경우
2. 참조형 매개변수는 참조하는 객체의 주소값이 복사되어 전달된다.
3. 객체의 주소를 공유하기 때문에 메소드 수행 이후 실제 변수의 값이 변한다.
public class CallBy {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] mList = {24,30,60};
System.out.println("변경전 : " + Arrays.toString(mList)); //[24, 30, 60]
changeArray(mList);
System.out.println("변경후 : " + Arrays.toString(mList)); //[100, 100, 100]
}
public static void changeArray(int[] mList) {
mList[0] = 100;
mList[1] = 100;
mList[2] = 100;
}
}
'Java > 정리' 카테고리의 다른 글
[eclipse] A java Runtime Environment(JRE) or Java Development Kit(JDK) must be available in order to run Eclipse. (0) | 2022.01.09 |
---|---|
[Java] 파일 출력 방법들 (0) | 2021.12.23 |
[java] String의 메모리 저장 방식 (0) | 2021.10.14 |
[Java] Static 변수,메소드,싱글톤 패턴 (0) | 2021.08.28 |
[Java] 컬렉션프레임워크_Map (0) | 2021.07.19 |