[Java] Java에서의 Call By Value, Call By Reference

김의진·2021년 9월 13일
0
  • Call By Value - 특정 값을 파라미터로 넘겼을 때 원본 데이터의 주소 값이 아닌 '값'을 복사하여 (호출부의 지역변수에 초기화시킴) 사용하는 것

  • Call By Reference - 특정 값을 파라미터로 넘겼을 때 원본 데이터의 주소 값을 넘기는 것

Java에서의 경우

Java는 Call By Reference의 사용이 불가능하다.
그러나 가끔 객체를 파라미터로 넘길때 Call By Reference를 사용하는 것과 같아 보이는 경우가 있다.

정확히는 '참조타입'을 파라미터로 넘길 경우인데, 참조타입은 말 그대로 Heap Memory에 할당되어 있는 데이터에 대한 참조값(주소값)을 가지는 타입이다.

그렇기 때문에 파라미터로 참조타입을 넘길경우 데이터의 주소값이 넘어가게 되고, Call By Value일지라도 주소값을 대상으로 데이터를 다루게 되니, 원본 데이터에도 영향이 가게 된다.

참고 https://velog.io/@ahnick/Java-Call-by-Value-Call-by-Reference

profile
3년차 Spring, Java 주니어 백엔드 개발자입니다.

0개의 댓글