JAVA개념
Call by value, Call by reference
알아가자
2022. 1. 27. 20:35
public static void main(String[] args) {
int a=20;
float b=56.7f;
float v=sum(a, b); // Call By Value
System.out.println(v);
int[]arr= {1,2,3,4,5};
// 배열의 총합?
int vv=arrSum(arr); // Call By Reference(번지)
System.out.println(vv);
}
public static float sum(int a,float b) {
float v=a+b;
return v;
}
public static int arrSum(int[] arr) {
int sum=0;
for(int k:arr) {
sum+=k;
}
return sum;
}
Call by value : 말 그대로 값을 넘긴다.
예시)
int a = 10;
float b = 56.7f
a라는 변수이름이 100번 주소를 가지고 있고, 그 주소에 10이 들어간다.
b라는 변수이름이 200번 주소를 가지고 있고, 그 주소에 56.7f이 들어간다.
매개변수를 넘길 때
sum 함수의 int a, int b에 100번 주소에 있는 10이라는 값, 200번 주소에 있는 56.7f 값이 들어간다.
여기서 int a, float b는 main 함수에서 선언한 a, b가 아니다. 그래서 변수 명을 다르게 써도 괜찮은 것.
Call by reference : 주소를 넘겨준다.
Array 배열(객체)를 매개변수로 넘길 때,
int[]arr= {1,2,3,4,5};
arr이라는 변수명은 마찬가지로 주소 값을 지정하여(100번으로 가정)
그 주소 값에 메모리 공간은 또 5개로 나눠져 1,2,3,4,5 값이 저장되어 있다.
메서드에서 매개 변수로 배열(=객체)를 호출 할 때 주소 값(100번지)를 가르키는 주소 값을 받아 100번지 주소에 있는 값들을 찾아 어떤 작업을 할 수 있는 것이다.