본문 바로가기

Language, IDE/JAVA, android

[JAVA 자바] 매개변수

반응형

매개변수 전달방식에는 call-by-value방식과 call-by-reference방식이 있다.

call-by-value는 매개변수를 전달할 때 값을 복사하여 넘겨주는 방식이고

call-by-reference는 매개변수를 전달할 때 값이 아닌 해당 변수의 주소값을 넘겨주는 방식이다.

보통 int나 double같은 일반적인 변수타입은 call-by-value방식을 사용하고 배열이나 클래스같은 메모리를 많이 차지하는 타입은 

call-by-reference를 사용한다.


C++나 다른 언어에서는 매개변수 방식을 프로그래머가 선택하여 사용한다.

하지만 자바에서는 컴파일러가 자동으로 매개변수 방식을 지정하여 준다. 즉 프로그래머는 일반적인 call-by-value이냐 call-by-reference이냐를 고민할 필요없이 call-by-value처럼 그냥 변수를 넘겨주면 컴파일러가 알아서 선택하여 준다.

이제 자바 컴파일러의 매개변수 선택방식을 알아보자



자바에서는 기본 자료형(byte, short, int, long, float, double, boolean, char)은 call-by-value방식으로 매개변수를 전달한다. 기본 변수형이 아닌 기본 자료형임을 유의하여야 한다. 즉 위의 변수타입말고도 위 변수타입과 같은 자료형을 가지는 포장 클래스(Byte, Short, Integer, Long, Double, Boolean, Character)도 call-by-value방식으로 매개변수를 전달한다.


위의 기본 자료형을 제외한 모든 것들은 call-by-reference방식이다. 위 자료형을 제외한 객체, 배열등이 포함된다. 기본 자료형인 배열도 call-by-value가 아니라 call-by-reference라는 것을 유의하자.



※ 참고

기본 자료형의 변수나 객체는 call-by-reference로 전달하려 하여도 컴파일러가 call-by-value로 전달을 한다. 기본 자료형인 변수를 여러 클래스에서 공유하기 위하여 call-by-reference방식을 사용하고 싶다면 위 자료형을 크기가1인 배열을 넘기면 간단하게 기본 자료형을 call-by-reference방식으로 넘길 수 있다. 


반응형