[CS] Object Reference(객체참조)

재키·2021년 2월 26일
2

ComputerScience

목록 보기
1/2

0. 정의

reference(참조)는 프로그램이 메모리나 다른 저장 공간에서 특정 변수의 값이나 레코드에 접근할 수 있도록 하는 값이다. 메모리 상의 객체의 주소 또는 참조값이 그 예시이다. object referenece(객체 참조)는 클래스로 만든 객체의 주소 또는 참조값에 해당한다. 객체(객체변수)는 기본 데이터 변수와 다르다. 객체 변수 선언 후 메모리를 생성(new 키워드 사용)해줘야 완전한 객체가 된다.

1. 객체참조의 과정

자바에서는 C언어와 다르게 메모리 상의 주소가 참조의 대상이 아니다. 자바에서는 객체의 주소 대신 참조값이라는 것을 할당받는다. 그런까닭에 자바에서의 객체 변수를 참조 변수(Reference Variable)라고 한다.

0) 기본

Student st1 = new Student();
Student st2 = new Student();

위의 st1st2는 Student의 객체 변수이자 Student의 인스턴스 참조 변수이다. st1st2에 객체 변수가 참조되는 과정은 아래와 같다.

1) 클래스 선언

public class Student {
	public int class;
    public int average;
}

2) 객체 변수 선언(메모리 생성 전이므로 null로 초기화)

Student st1 = null;
Student st2 = null;

3) 객체 변수에 대한 메모리 생성(by 키워드 new 클래스())

st1 = new Student();
st2 = new Student();

4) 메모리 생성 후

객체 변수에 대한 메모리가 생성되면 내부 인덱스 테이블에서 주소 매핑 후 참조값을 만들고 참조값은 참조 변수 st1st2에 할당된다.

  • 참조값은 객체 구분의 유일한 수단으로 가상머신(JVM)에서 자동으로 생성된다.
  • 참조값은 가상머신 내부에서 관리되며 노출되지 않는다.

2. 참조변수의 특징

1) 참조값(Reference Value)

참조값은 객체의 메모리를 생성했을 때 메모리와 연결된 유일한 숫자값을 말하며, 이 숫자값을 참조 변수가 받아 저장하는 것이다. 자바에서는 참조값을 가지고 있으면 해당 객체를 핸들할 수 있다. 참조값으로 작업하면 참조값과 매핑된 주소로 작업하는 것과 동일한 효과가 있다.
인스턴스를 하나 생성하면 1)참조값을 저장하기 위한 공간(객체 변수를 위한 공간)과 2)new 했을 때 힙영역에 생성되는 객체 자체의 공간이 만들어진다.

2) 참조변수

참조 변수는 4바이트짜리 정수값이다. 그렇기 때문에 객체의 메모리를 할당할 때 4바이트의 정수값을 객체 변수에 할당한다.

Student st1 = null;

st1은 4바이트짜리 참조 변수가 만들어진 것이다. 즉, 참조값을 저장할 수 있는 4바이트의 메모리만 확보한 상태이다. new를 이용하여 객체가 생성되지 않은 상태이므로 st1에는 현재 4바이트의 메모리에 null값이 들어있다.

st1 = new Student();

st1이라는 변수에는 객체의 참조값을 받을 수 있다. new Student()를 실행하면 객체의 메모리가 생성되고 메모리 상의 주소와 매핑된 참조값이 st1에 할당된다. st1이라는 참조 변수는 단순히 정수형 숫자(참조값)를 담을 수 있는 4바이트짜리 메모리일 뿐이다.

4. 참고 URL

클래스와 객체의 개념 잡기 ㅋㅋ

profile
기초를 탄탄히!

0개의 댓글