Call By Value, Call By Reference <JAVA>

채상혁·2022년 5월 30일
0

❓ Call By Value | Call By Reference

프로그래밍 언어의 method 매개변수 호출 방식.

  • Call By Value 함수의 인자를 전달할 때 값을 전달하는 방식.

  • Call By Reference 주소를 전달하는 방식.

    자바는 기본적으로 Call By Value

    결과 :

    참조형에서는 어떨까?

결과 :

이것을 보고 Call By Reference 라고 생각할 수 있다.

int와 String을 전달할 때와 무슨 차이가 있었는지 알아보자

JAVA에서는 Call By Value 방식을 수행할 때 값을 넘겨받은 method에서 값을 복사하여 지역변수에 저장합니다 즉 이전 값을 사용한 것이 아니라 새롭게 생성한 지역 변수에 이름과 값을 복사해서 사용합니다.

그렇기 때문에 두번째 메서드에서 값을 변경해도 첫번째 메서드에 영향을 끼칠 수 없습니다.

Person 클래스에서는 결과가 다르게 나온 이유 💡

Person에서 객체를 생성해서 Heap 메모리에 저장합니다. 객체의 주소값을 참조하기 때문에 참조 타입이라고 합니다.

첫번째 메서드에서 두번째 메서드로 넘겨준 것은 Person의 주소값을 넘겨준것이고 첫번째 method가 가지고 있는 주소값과 동일한 주소값을 가지고 객체의 상태를 수정 --> 동일한 주소를 참조하기 떄문에 결과가 나오는 것 입니다.

반면에 new 를 사용하여 새로운 인스턴스를 생성한다면 서로다른 값이 나오겠죠!!!

0개의 댓글