본문 바로가기

Java/문법 및 이해

[JAVA] Primitive Type과 Reference Type

1. 타입(Type)이란?

우리는 현재 굉장히 많은 언어가 있는 시대에 살고 있다.

그렇다면 왜 계속해서 새로운 언어가 나올까? 새로운 언어가 나오면서도 데이터 타입도 조금씩 변화하고 있다.

 

그 이유는..

기존 언어의 문제점을 보완하기 위해 새로운 언어가 등장하고 있다. 또한, 특정 여역에서 활용할 수 있는 언어로 특화되어서도 등장하고 있다.

 

자바 같은 경우도 처음에는 웹 개발을 목적으로 나온 것이 아니었다.

 

자바를 이용한 첫 애플리케이션은 자바 애플릿이라는 것이 있다. 결국 많은 문제로 인해 사라졌지만..

 

남은건 웹 프론트를 버린 백엔드(spring)만이 남았다.

 

서론이 길었지만 이러한 많은 언어에서 공통점은 데이터 타입이다.

 

데이터 타입은 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 것이다.

자바에서 이러한 타입에는 기본형 타입과 참조형 타입이 있다.

 

 

2. 기본형 타입(Primitive type)

  • 총 8가지의 기본형 타입(Primitive type)을 미리 정의하여 제공한다.
  • 기본값이 있기 때문에 Null이 존재하지 않는다. 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용한다.
  • 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다.
  • 만약 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러가 발생한다. 주로 문법상의 에러가 많다. 예를 들어 ;을 안붙였다는 이유로 빨간 줄이 쳐지는 경우
   타입  할당되는 메모리 크기  기본값  데이터의 표현 범위
 논리형  boolean  1 byte  false  true, false
 정수형  byte  1 byte  0  -128 ~ 127
 short  2 byte  0  -32,768 ~ 32,767
 int(기본)  4 byte   0  -2,147,483,648 ~ 2,147,483,647
 long  8 byte  0L  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 실수형  float  4 byte  0.0F  (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값
 double(기본)  8 byte  0.0  (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값
 문자형  char  2 byte (유니코드)  '\u0000'   0 ~ 65,535

 

 

3. 참조형 타입(Reference type)

  • 기본형 타입을 제외한 타입들이 모두 참조형 타입(Reference type)이다.
  • 빈 객체를 의미하는 Null이 존재한다.
  • 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 힙(Heap) 메모리에 저장된다.
  • 문법상으로는 에러가 없지만 실행시켰을 때 에러가 나는 런타임 에러가 발생한다. 예를 들어 객체나 배열을 Null 값으로 받으면 NullPointException이 발생하므로 변수값을 넣어야 한다.
 타입 예시  기본값 할당되는 메모리 크기 
 배열(Array)  int[] arr = new int[5];  Null  4 byte (객체의 주소값)
 열거(Enumeration)    Null
 클래스(Class)  String str = "test";
 Student sujin = new Student();
 Null
 인터페이스(Interface)     Null

 

 

 

 

 

 

 

 

[참고]

https://gbsb.tistory.com/6