본문 바로가기

old

[Java] 값에 의한 호출 (Call Of Value)

자바의 값호출 (Call Of Value)

c++에서는 new 생성자가 주소값을 반환하지만, JAVA에서는 참조값이라는 정수값을 반환한다.

 

 

참조변수는 단순히 정수형 숫자를 담을 수 있는 4바이트짜리 메모리.

  • 참조값이란 객체의 메모리를 생성했을 때 메모리와 연결된 유일한 숫자값이다.
  • 참조값은 'new 연산자'로만 생성할 수 있다. 따라붙는 '자료형()'은 생성자.
  • 참조값으로 작업하면 내부에서 참조값에 연결된 메모리로 작업하는 것과 같은 효과이다.
  • 인스턴스를 만들면 자바 실행 시스템에서 인스턴스의 실제 주소에 연결된 숫자(참조값) 하나를 준다.
  • 이 숫자(참조값)를 인스턴스가 받게 되며, 인스턴스는 이 숫자(참조값)를 이용해서 해당 인스턴스의 메모리에 값을 할당하거나 메소드를 호출할 수 있다.
  • 그렇기 때문에 인스턴스 메모리를 할당할 때는 4바이트의 정수값을 객체변수에 할당하게 된다. 즉 참조변수는 4바이트이다.
  • 참조변수 자체는 4바이트의 메모리 생성의 의미를 담고 있다.
  • 참조변수는 현재 4바이트의 메모리에 null값이 들어 있다.
  • 참조변수에는 객체의 실제 메모리와 연결된 Sun형의 참조값을 넣을 수 있다.

 

이러한 이유에서 자바에서는 **값에 의한 호출(Call by Value)**만 존재한다.

  • 참조값끼리 아무리 복사를 하더라도 객체 내부의 메모리끼리의 복사는 이루어지지 않는다.
  • 참조값 복사는 값복사이다.

 

 

출처: https://dohe2014.tistory.com/entry/참조reference와-참조변수reference-variable