-
[JAVA 문법 Step 6] - 자바의 일반변수와 레퍼런스변수 본문
자바의 변수에는 일반변수와 레퍼런스변수가있습니다.
일반 변수는 크기가 정해져 있는 것으로서 해석할 수 있습니다.
여기서 num은 int타입으로 main안에 선언했기 때문에 일반변수입니다.
그러나, MyData는 우리가 직접 만든 클래스이기 때문에 자바입장에서는 이것을 직접 실행시켜보지 않는 이상 이 MyData에 대해 모릅니다. 그래서
이렇게 MyData에서 이 d라는 변수를 갖고왔을 때를 레퍼런스변수라고 합니다.
크기가 정해져 있지 않다는 것은 컴파일 시점에 이야기하는 것입니다.
그리고 또 알아야할 것이 있습니다.
나중에 타입 변수라는 것이 나오는데 이 타입 변수를 선언한다는 것은 int num;까지만 썼을 때를 의미합니다.
즉, num에 값을 넣지 않고 num만 선언했기 때문에 이것을 변수를 선언했다고 말합니다. 일반변수와 레퍼런스 변수 모두에게 해당됩니다.
그리고 선언한 num에 값을 넣어서 선언하면 이것은 변수를 x로 초기화 했다고 말하며 이것은 자동으로 메모리에 할당되었다고 얘기합니다.
즉, 일반 변수는 값을 가지고 있고 레퍼런스 변수는 주소를 가지고 있습니다.
또한 일반변수는 컴파일시 크기를 미리 알 수 있는 반면에 레퍼런스 변수는 크기를 알 수 없습니다.
따라서 레퍼런스 변수를 사용할 때는 주소를 찾아서 그 주소에 있는 값을 가져오는 두 가지 과정을 거치게 됩니다. 반면에 일반변수는 바로 값을 가져오기 때문에 한 번의 과정만 거치면 됩니다.
이 레퍼런스 변수는 C언어에서는 포인터라는 의미로서 통용되기도 합니다.
그리고 출력을 하고 싶을 땐 일반변수는 그대로 변수를 SYSOUT에 넣으면 되는 반면
레퍼런스 변수에서는 .이라는 연산자를 이용하여 원하는 값을 출력할 수 있습니다.
감사합니다.
'CS > JAVA' 카테고리의 다른 글
[JAVA 문법 Step 8] - 메서드 Stack 메모리(중요) (0) | 2021.12.01 |
---|---|
[JAVA 문법 Step 7] - 메서드 (0) | 2021.11.30 |
[JAVA 문법 Step 5] - 클래스 자료형(Heap 저장) (0) | 2021.11.26 |
[JAVA 문법 Step 4] - 클래스 자료형(Static 저장) (0) | 2021.11.26 |
[JAVA 문법 Step 3] - 자바의 자료형과 메모리 구조 (0) | 2021.11.26 |