Java - 자바에는 call by value 만 있다:)

parkkhee·2023년 3월 10일
0

옹숭깊다

목록 보기
14/18

자바에서의 파라미터는 call by value로서만 동작되며, 원시값이 복사 되느냐 주소값이 복사되느냐 차이가 있을뿐.

그리고 매개변수에 복사된 값에 따라, 원시값이면 바로 연산을하고 주소값이면 해당 메모리 주소를 참조해 값을 가져와 연산할 뿐.

C언어에서는 포인터(*) 변수를 파라미터 받게 하고 함수를 호출할떄 주소연산자(&) 를 이용해 주소값을 직접 넘겨 직접적인 메모리 참조가 가능.

그래도 원시값을 복사하느냐, 주소값은 복사하느냐에 따라 반환 결과가 달라지기 때문에 세간에서는 이 둘을 구분하기 위해 call by value / call by address 로 명명 지어 구분하기도 함. (어차피 똑같은 value 복사지만 굳이 구분하자면 🤔)

다만 외부적인 관점에서 보면 주소값이 복사되든, 포인터를 이용해 참조하든, 메모리 안에 있는 데이터를 참조해 연산하는 동작 자체는 같기 때문에,

사용하는 입장에서는 둘은 차이가 없다고 보면 된다.

참고사이트: https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%9E%90%EB%B0%94%EB%8A%94-Call-by-reference-%EA%B0%9C%EB%85%90%EC%9D%B4-%EC%97%86%EB%8B%A4-%E2%9D%93

profile
순우리말 백엔드 개발자

0개의 댓글