개발자의 공부방/자바

Call by Value 와 Call by Reference

  • -
728x90
반응형

** 미리보기용 이미지입니다 **

 

 

 

 

Call by value, Call by Reference

 

-       Call by Reference : 매개 변수의 원래 주소에 값을 저장하는 방식. 클래스 객체를 인수로 전달한 경우

-       Call by Value : 인수로 기본 데이터형을 사용. 주어진 값을 복사하여 처리하는 방식. method 내의 처리 결과는 method 밖의 변수에 영향을 미치지 않는다.

 

 

 

 

1) Call by Value

public class CallBy { //call by value (값에 의한 호출.) static void print(int a) { a = 20; System.out.println(a + ">>>"); } public static void main(String[] args) { int a = 10; print(a); System.out.println(a+"<<<"); /* 이름은 같지만 다른 것. * 그렇기 때문에 위 메소드에서 바꾼다고 해서 아래에서 적용이 되지 않는다. */ } }

결과

Call by Value의 결과 값.

 

 

 

 

2) Call by Reference

public class CallBy { //call by reference(address), 주소값에 의한 호출 static void print(int[] a) { /*참조변수,주소값만 복사된 것이기에 이것을 얕은복사라고도 함. 배열까지 복사됐으면 깊은복사. */ System.out.println("배열 출력 >>> 레퍼런스 값이 int a에 저장"); //번지값 a[0]=100; a[1] = 200; for (int n : a) { System.out.print(n+"\t"); } } public static void main(String[] args) { int[] arr = {10,20,30,40,50,60}; //a 0번째 요소를 바꾸는 것은 ↑ 위의 배열 arr 10을 바꾸라는 것. print(arr); System.out.println("\n"); System.out.println(arr+"배열로 받았을 때"); System.out.println(); for (int n : arr) { System.out.print(n+"\t"); } } }

결과

Call by Reference

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.