Call By Value, Call By Reference

김회민·2023년 2월 11일
0

Java

목록 보기
5/16

값 호출 Call By Value

  • 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다.
    • 임시 공간 : JVM - Runtime Data Area - JVM Stack
  • 함수 호출 시 인자로 전달되는 변수(매개변수)의 값을 복사하여 함수의 인자로 전달한다.
  • 함수 안에서 인자 값이 변경되어도, 외부 변수 값(원본 값)은 변경되지 않는다.

참조 호출 Call By Reference

  • 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다.
    • 임시 공간 : JVM - Runtime Data Area - JVM Stack
  • 매개변수의 참조값(주소값)을 전달한다.
  • 함수 안에서 인자 값이 변경되면, 외부 변수 값(원본 값)도 변경된다.

자바는?

원시 타입은( Primitive ) Call By Value고,
참조 타입은( Reference ) Call By Reference일까?

  • Java는 오직 Call By Value로만 동작한다.
  • Java에서 변수를 선언하면 Stack 영역에 할당된다.
    • 원시 타입은 Stack 영역에 변수와 함께 값이 저장된다.
    • 참조 타입객체는 Heap 영역에 저장되고, Stack 영역의 변수객체의 주소값을 갖고 있다.
  • 외부 변수 값( 원본 값 )과 함수 인자( Parameter )는 Stack 영역 내에서 존재하는 다른 변수다.

출저

JAVA - 기술 면접 질문

profile
백엔드 개발자 지망생

0개의 댓글