키보드워리어

[자바] 참조자료형 - 소개 본문

JAVA/입문

[자바] 참조자료형 - 소개

꽉 쥔 주먹속에 안경닦이 2023. 1. 20. 15:03
728x90

안녕하세요 섹션에서 참조 자료형에 대해서 소개해드리려고 합니다.

 

시작하기 앞서 이제 설 명절이 다가왔는데 모두 새해 복 많이 받으시고, 2023년에도

하시고자 하시는 모든 일들이 무탈하시기 바랍니다.

 

 

 


 

이전에 객체지향 프로그래밍을 잠깐 소개해드릴때 (section 8 참고)

저희는 클래스를 생성하고 인스턴스를 어떻게 생성하는지 배웠습니다.

 

참조 타입 | 참조 변수

 

 

참조타입예시
참조타입예시

붕어빵틀에 반죽과 팥을 넣으면 붕어빵이 나와요.

 

붕어빵 틀: 참조 타입

붕어빵: 참조 변수

 

위에 그림에서 jupiter는 참조 변수, Planet이 참조 타입입니다.

 

우리가 이 클래스에서 int i를 지정해 준다고 하면?

i는 기본 타입 integr의 참조 타입에 해당합니다.

 

 

참조 변수와 기본 변수가  메모리에 어떻게 저장될까요?

참조 타입이 무엇인가요? 

여러분들이 생성하는 모든 클래스가 참조 타입입니다.

자바 자체에 사전 정의된 클래스들과 스트링타입도 모두 참조 타입입니다.

Ex) BigDecimal, Character.toUpperCase 등 썼던 클래스 모두 참조 타입입니다.

 

참조 변수는 무엇입니까?

위에 소개 스텝에서 말씀드린 jupiter(인스턴스)가 참조 변수입니다.

 

참조 변수 예시
참조 변수 예시

가령 Animal 클래스에서 int형 id 멤버변수를 지정해 주고

생성자를 만들어 지역변수 id를 멤버변수 id의 값으로 넣어준다고 생각해 보세요.

ainmal클래스에 dog와 cat 인스턴스를 만든 후 생성자 값을 12와 15로 주었어요.

 

Heap | Stack

새로운 객체가 생성될 때마다 이들은 모두 ‘Heap’이라고 하는 곳에 저장이 됩니다.

자바 프로그램이 실행될 때 두가 지 종류의 메모리가 있는데 그중 하나는 ‘Stack’이고 하나가 ‘Heap’입니다.

 

모든 새로운 객체(인스턴스)는 여기서 Heap에 저장됩니다.

 

그리고 지역변수를 생성하면 이건 Stack에 저장이 됩니다. 변수이름은 i 값은 5 이런식으로요.

 

스택과 힙
스택과 힙

dog는 Stack 어딘가에 저장이 됩니다. 값은 이것이 저장된 경로인 1A라는 값을 가집니다.

그래서 dog에 대한 값은 객체가 저장된 경로의 참조하는 정보로 Stack에 저장됩니다.

 

그래서 dog는 참조 경로를 가지고 있기 때문에 참조 변수라고 불리는 겁니다.


 

cat도 마찬가지입니다. cat도 메모리가 어떻게 저장됩니까?

부여된 생성자 int값은 15입니다. 1C에 있죠.

 

스탭과 힙2
스탭과 힙2

이게 참조변수들이 저장되는 방식입니다.

 

실제 객체정보는 Heap에 저장이 되고

Stack에 저장되는 정보는 실제 객체가 저장된 메모리의 경로입니다.

 

 

이런 차이가 있어서 기본 변수와 참조 변수를 구분하는 것은 매우 중요합니다.

728x90