foxpacking

Programming Lessons

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 란?

CallByValue사진

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);
	}
}
    
CallByValue로직사진
CallByValue결과사진

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

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나