티스토리 뷰

목표

  • 자료형에 대한 이해

 

Self-check list

  • 기본형과 참조형을 구별할 수 있다.

 


 

자료형이란 게 뭘까?

변수를 사용하기 위해서는 변수를 담을 공간이 필요하다. 상황에 따라 큰 공간이 필요할 수도, 작은 공간이 필요할 수도 있다. 우리가 안경을 여행 케이스에 넣고 휴대하고 다니지 않는 것처럼, 변수에도 그에 맞는 적당한 공간(메모리)이 있다. 변수가 들어갈 수 있는 모든 종류의 공간을 자료형이라 한다.  

 

자료형의 구분

 

자바의 자료형은 크게 2가지로 분류할 수 있다. 기본형(Primitive Type)과 참조형(Reference Type)으로 나뉜다. 간단하게 설명하면 다음과 같다. 이해가 필요하다면 접은 글을 펼쳐 읽기를 권한다.(간단한 정의가 필요한 것이라면, 이 정도만 알고 넘어가자. 포스팅을 날먹(?) 하지 않기 위해 디테일은 접은 글에 넣었다. )

 

 

자료형과 크기

  1. 기본형은 8가지 기본적인 자료형이다. 이들은 실제 값을 직접 저장하는 공간으로 Stack 영역에 저장된다.
  2. 참조형은 기본 타입을 제외한 모든 자료형이다. 주소 값을 저장하는 공간으로 Heap 영역에 저장된다.

 

 

 

더보기

기본형(Primitive Type)

기본형은 자바에서 제공하는 자료형이다. 이 자료형들은 자바에서 연산을 위해 직접 쓰이는 애들이다. 그러니 실제로 값이 들어가고 Stack영역 메모리를 사용한다. 실제 값이 들어가기 때문에 자료형 마다 크기가 제각각이다. 

 

참조형(Reference Type)

기본형은 저렇게 다양한데 왜 참조형은 4byte 하나 일까? 하는 의문이 떠오를 수 있다. C를 공부했던 사람이라면 위의 설명만으로 눈치를 챘을 수도 있다. 참조형 변수는 포인터와 같이 사용되기 때문이다. 처음 듣는 개념일 수도 있으니 풀어서 설명해보겠다. 

 

 

  • 다음과 같은 사람 3명이 있다.
  • 사람A는 헬창이다. A는 짐을 100kg 까지들 수있다.
  • 사람B는 건물주다. B는 집에 현금이 10억정도 있다.
  • 사람C는 공부벌레다. C는 10시간을 일어나지 않고 앉을 수 있다. 

 

당신은 무거운 것도 못 들고, 돈도 없으며, 엉덩이도 가벼운 사람이다. 저 3명의 사람만큼 전문성은 없지만, 당신은 다른 장점이 있다. 모두 저 3명을 이용할 수 있다는 것이다. 

 

만약 누군가 80kg의 쌀가마니를 들어달라고 했다면, 당신은 들지 못하지만 A를 불러서 쌀가마니를 들게 할 수 있다.

마찬가지로 누군가 현금 10억을 빌려 달라고 하면, 당신은 빌려주지 못하지만 B를 불러 해결할 수 있다.

 

참조형 변수도 이와 비슷하다. 참조형 변수는 당신이 불렀던 A, B, C처럼 이름(주소)만을 가지고 있다. 본인은 이름만 알면 되기에 많은 능력(공간)이 필요가 없다. 정리하자면, 참조형 변수는 실제 값이 위치한 공간의 주소 값만을 갖는다.


그럼 왜 이렇게 귀찮게 쓸까?

기본형은 모드 Stack이라는 메모리 공간에 값을 직접 저장하는데, 왜 참조형은 주소만 가져오는 거야?라고 생각할 수 있다. 이 부분을 이해하기 위해서는 메모리 영역 Stack과 Heap에 대해 살짝 알아볼 필요가 있다. 

참조형은 주소 값을 저장할 공간 4byte만 Stack 공간에 위치해 있고, 실제 값은 Heap 영역에 존재하게 된다. 

Stack 영역과 Heap 영역을 쉽게 얘기하자면 이렇다. Stack을 강의실 책상이고, Heap은 당신 가방이다. 당신이 데이터 베이스 수업을 듣는데, 가방에 있는 알고리즘 책과 스프링 부트 책을 모두 올려놓고 DB 책을 찾지는 않지 않은가? 필요할 때 그때그때 책상에 올려놓고, 사용하는 것이 효율적이다. 이와 같은 논리로 Stack 영역에는 4byte의 참조형 변수만 만들어 놓고 Heap에 있는 실제값의 주소를 참조해서 쓰는 것이다.

 

 

기본형과 참조형 어떻게 구별하는지 모르겠다!!

기본형과 참조형 구별은 간단하다. 자바에서 참조형에는 생성 시 new 키워드가 반드시 함께 쓰인다.

  • 변수 생성 시, new를 사용하여 생성한다면 참 조형이다.

이것만 기억하고 있으면 쉽게 구별할 수 있다. 

 

 

 

 

 

 

수정해야할 점이 있거나, 부족한 부분에 대해서는 댓글 부탁드립니다.

감사합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함