Categories: Java 언어Korean

Java 총 정리[38. Call by Value]

Call by Value

이전 메소드의 Call에 대해서 공부하고 문제도 풀어 봤습니다. 이제부터는 당연히 메소드에 대한 내용을 좀 더 심도 있게 들어가야 하겠죠? 아직 메소드에 대한 내용들이 남아 있기 때문에 한층 더 깊은 내용을 공부를 할 수 있도록 하겠습니다.

여러분들은 메소드 함수를 보고 4가지 형식으로 볼 때 도대체 retrun을 안하고 결과를 주지 않는 경우가 있는데 이런 경우는 도대체 어느 상황에 사용이 되시는지 궁금할 수 있습니다. 당연히 return을 하지 않는 경우도 많이 존재 하기 때문에 어떤 상황에서 return을 해야 하고 또는 어떤 상황에서는 return이 필요 없는지 이 글을 계속 읽으시면 확인을 해보실 수 있습니다.

이번에 공부를 할 내용은 메소드의 연산 결과를 호출 한 곳에서 알고 싶다면 꼭 return을 해야 하는 Call by Value에 대해서 배워 보겠습니다. Call by Value의 경우에는 retrun을 하지 않는 다면 절대 메소드 안에서 일어난 값의 변경을 알 수가 없습니다. 이 글을 끝까지 읽으신다면 Call by Value에 대해서 이해하시고 사용을 하실 수 있습니다.

Call by Value 란?

Call by Value란 메소드를 호출시 매개변수를 기본 자료형을 받게 하면 Value 즉 값이 이동을 하게 되기 때문에 값을 매개변수에 대입을 하고 메소드가 동작을 하게 됩니다. 그러면 실질 변수나 객체의 이동이 아니기 때문에 그 매개변수를 아무리 바꾸더라도 호출 시 넘겨줬던 변수의 값이 변경이 안 됩니다.

※ Call by Value는 return을 하지 않으면 호출 한 곳의 값을 변경을 할 수 없습니다.

Call by Value 예제

    
public class CallByValueTest {

 static void abc(int a) {
  a = 10; // main메소드에 있는 a는 변경되지 않음
 }
 
 static int def(int a) {
  a = 10;
  return a; // Call by value이기 때문에 return을 해서 값을 전달 필요
 }
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int a = 5;
  abc(a);
  System.out.println(a);
  
  a = def(a);
  System.out.println(a);
 }
}
    

위의 소스를 분석을 하면 abc메소드 같은 경우 return을 하지 않고 매개변수의 값만 변경을 했고 def메소드 같은 경우에는 값을 변경 후에 return을 하였고 그걸 호출 한 곳에서 a라는 변수에 대입을 했기 때문에 처음에 abc 불렀을 때에는 값이 변경 되지 않고 그대로 5가 출력이 되고 def를 불러서 값을 대입을 했기 때문에 10으로 변경된 것을 확인을 할 수 있습니다.

Dolphin

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

4개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

5개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

5개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

6개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

6개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

6개월 ago

This website uses cookies.