변수(Variable)는 문자, 숫자와 같은 데이터를 담는 저장소(container)이다.
여기에 담겨진 데이터는 다른 데이터로 바꿀 수 있으며,
변수에 담을 수 있는 데이터의 종류는 데이터 타입으로 정해져 있다.
자바에서 변수는 기초 변수와 참조형 변수로 구분된다.
오늘은 참조형 변수에 대해 자세하게 알아보자!
기초 변수
: int, double, char 등 자료형으로 선언된 변수.
자료형으로 선언된 변수는 객체라고 하지 않는다.
레퍼런스 변수
: 메모리상에 생성된 인스턴스를 가리킬 때 사용하는 변수다.
인스턴스란?
객체를 소프트웨어에 실체화하면 그것을 인스턴스라고 부른다.
즉, 메모리에 할당 된 객체를 인스턴스라고 한다.
인스턴스는 객체에 포함되며, OOP 관점에서 객체가 메모리에 할당되어 실제로 사용될 때 인스턴스라고 부른다.
자세한 내용은 아래를 참고하기를 바란다.
https://codingloginmyyouth.tistory.com/25
Class, Object, Instance 차이
클래스(Class) 객체를 만들어 내기 위한 설계도 혹은 틀 연관되어 있는 변수와 메서드의 집합 객체(Object) 소프트웨어 세계에 구현할 대상 클래스에 선언된 모양 그대로 생성된 실체
codingloginmyyouth.tistory.com
아래 두 코드를 보고 차이점을 생각해보자.
int d = 1;
D d = new D();
첫번째 코드는 데이터형이 int(기본 데이터형)이고 두번째 코드는 'D'이다.
자바에서는 기본 데이터형을 제외한 모든 데이터 타입은 참조 데이터형(참조 자료형)이라고 부른다.
기본 데이터형은 위와 같이 값이 복제 되지만 참조 데이터형은 참조된다.
new를 사용해서 객체를 만드는 모든 데이터 타입이 참조 데이터형이라고 생각해도 된다.
참조형 변수와 기초 변수의 차이 ?
기초 변수 : 할당 메모리에 저장되는 데이터가 저장
참조형 변수 : 주소 값이 저장
클래스를 사용하기 위해서는 메모리에 '생성'을 해야한다.
메모리 상에 생성된 클래스를 클래스 객체 혹은 인스턴스라고 한다.
레퍼런스변수는 메모리상에 생성된 인스턴스를 가리킬 때 사용하는 변수다.
모든 인스턴스는 레퍼런스 변수를 통해서만 사용이 가능하다.
레퍼런스 변수는 일반적인 데이터를 넣어두는 변수가 아니기 때문에 인스턴스를 가리키는 '값'이 없다.
레퍼런스 변수는 인스턴스의 멤버변수와 메서드만을 가리킬 수 있다.
인스턴스의 맴버 변수와 메서드를 사용하는 방식은 ' . ' 을 사용한다.
즉, 레퍼런스 변수는 참조형 변수이며 실제 값이 아닌 주소 값을 가리키는 변수 이다.
인스턴스를 생성하기 위해서는 new 연산자가 필요하다.
레퍼런스 변수의 사용법 -> new 클래스명();
이렇게 하면 메모리상에 인스턴스가 생성되고,
new 연산자는 생성된 인스턴스를 가리키는 레퍼런스를 반환한다.
이 값은 ' = ' 연산자에 의해 지정한 (ex out) 레퍼런스 변수에 저장된다.
레퍼런스 변수는 인스턴스 그 자체가 아니고, 단지 인스턴스를 '가리키기 위한' 변수이다.
레퍼런스 변수를 통해 생성된 인스턴스는 해당 객체의 맴버 변수와 메서드를 사용할 수 있다.
사용법 - 레퍼런스변수.메서드명(); / 레퍼런스변수.맴버변수명();
참고 자료
https://jjunii486.tistory.com/53
https://opentutorials.org/module/2495/13986
프로그래밍 공부를 위해 여러 자료들을 토대로 작성한 기록입니다.
개인 공부에만 사용해주시고, 상업적인 활용과 재배포를 금지합니다.
'Programming' 카테고리의 다른 글
[데이터베이스 설계] ERD, 논리명, 물리명 (0) | 2021.11.18 |
---|---|
Server란? (0) | 2021.07.20 |
개발자 SI & SM 업무 (0) | 2021.06.03 |
[개발 직무] Front-End / HTML, JS, CSS (0) | 2021.05.17 |
MVC 패턴 그게 뭔데, 어떻게 하는건데? (0) | 2021.04.20 |