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번지 주소에 있는 값들을 찾아 어떤 작업을 할 수 있는 것이다.
'JAVA개념' 카테고리의 다른 글
프로그래밍의 3대 요소(변수, 자료형, 할당) (0) | 2022.01.27 |
---|---|
Java 구동 방식 (0) | 2022.01.26 |
쓰레드의 실행제어 메서드 (0) | 2021.12.06 |
데몬 쓰레드(daemon thread) (0) | 2021.12.06 |
싱글 쓰레드, 멀티 쓰레드 (0) | 2021.12.06 |