[JAVA] 자바 - call by value / call by reference
by mini_min[JAVA]
call by value / call by reference
수업 때 한 번에 이해 되지 못했던 개념이었다. 파라미터를 전달하는 방법 중 2가지가 있다고 하는데, 'call by value' 와 'call by reference' 다. 메소드 사이의 자료 교환은 매개변수(인수)로 이루어진다. 형식 매개 변수는 호출한 메소드에서 넘겨받는 값, 실 매개 변수는 호출 받는 함수에게 넘겨주는 값이다.
✔️ call by value
형식매개변수와 실매개변수가 기억 공간을 따로 확보하는 것이다.
기본 자료형의 파라미터 전달 방법이 바로 call by value !
💡 기본 자료 형으로 인수 전달
class Test5 {
int x = 10;
public void sub1 (int a) {
a += 10;
}
public static void main(String[] args) {
Test5 t = new Test5();
int a = 5;
t.sub1(a);
System.out.println("sub1() 호출 후 a : " + a); //5
// a = 5 값을 인수로 받았을 때, 메소드 값은 15가 되었지만, 실매개변수 값은 그대로 5이다.
// 즉, 형식매개변수 값이 변경되어도 호출한 메소드의 실 매개변수 값은 변경되지 않는다.
✔️ call by reference
참조(주소) 값을 전달한다. 객체를 파라미터로 전달하는 경우가 바로 call by reference 에 해당된다.
💡 레퍼런스 형으로 인수 전달!!!!!(배열, 클래스 참조형, 인스턴스 참조형 등)
class Test5 {
int x = 10;
public void sub2(Test5 obj) {
obj.x += 10;
}
}
public static void main(String[] args) {
Test5 t = new Test5();
System.out.println("sub() 호출 전 x : " + t.x); //10
t.sub2(t);
System.out.println("sub() 호출 후 x : " + t.x); //20
// sub2 메소드에 클래스 참조형 메소드가 들어왔다. 해당 메소드는 호출된 메소드로 값을 전달하지 않고 참조 위치만 전달한다.
// t.sub2(t) = sub2 메소드 호출하면서 t 객체의 참조 위치 전달.
// main 에서 전달 받은 참조 위치의 x 필드 값 변경!!!! 10->20
'Java' 카테고리의 다른 글
[JAVA] 자바 - 비정형 인자(Varargs, 가변인수) (0) | 2022.07.19 |
---|---|
[JAVA] 자바 - 메소드 오버로딩 overloading (0) | 2022.07.19 |
[JAVA] 자바 - 재귀 호출 (0) | 2022.07.19 |
[JAVA] 자바 - 메소드 (유용한 연산) (0) | 2022.07.19 |
[JAVA] 자바 - 객체 배열 선언 (배열 합 & 랜덤 배열 값 추출) (0) | 2022.07.19 |
블로그의 정보
개발자 미니민의 개발로그
mini_min