Yoon DevLog
article thumbnail

 

자바에서는 크게 기본형 타입(Primitive Type), 참조형 타입(Reference Type)이 있다.

자바는 C언어와 달리 참조형 변수 간의 연산을 할 수 없다. 고로 실제 연산에 사용되는 것은 모두 기본형 변수이다.

이에 대해 정리해보자

 


 

기본형 타입(Primitive Type)

 

- 반드시 사용하기 전에 선언되어야함

- 비객체 타입이기 때문에 null 값을 가질 수 없음  -> 기본형 타입에 null 을 넣고 싶다면 Wrapper 클래스를 활용해야 함

- 실제 값을 저장하는 공간으로, stack 메모리에 저장

- 컴파일 시점에 데이터의 표현 범위를 벗어나면 컴파일 에러가 발생

- Ex) boolean, byte, short, int, long, float, double, char

그림1. 기본형의 종류와 크기/범위

- 정수는 많이 사용되므로 4가지 타입이 제공된다. 주로 int를 많이 사용하는데, int는 CPU가 가장 효율적으로 처리할 수 있는 타입이기 때문이다.

- 효율적인 실행보다 메모리를 절약하려면 byte나 short를 선택해야 한다.

 

 


 

참조형 타입(Reference Type)

 

- 기본형 타입을 제외한 타입들은 모두 참조형 타입으로 new 키워드로 객체를 생성하여 데이터가 생성된 주소를 참조

- 기본형과는 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장한다.

- 참조 타입의 데이터의 크기가 가변적, 동적이기 때문에 동적 데이터를 관리하는 힙 메모리에 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장한다.

- 기본적으로 java.lang.Object를 상속받으면 Reference Type이 된다.

- null로 초기화할 수 있다.

- 참조형 타입은 런타임 에러가 발생한다.

- Ex) Class, Array, Interface, Enumeration(열거)

 

 


 

 

실제로 사용하다보면 겪으며 차이를 느낄 수 있다. 하지만 알고 사용하는 것과 모르고 사용하는 것은 천차만별이다.

실제로 int 값의 범위를 간과하였다가 실제 배포 이후 큰 이슈가 터진 적이 있다. 실수는 반복되면 실력이기에 항상 기억하자!

 

profile

Yoon DevLog

@usnooy._.

백엔드 개발자 성장일기 -