728x90

Data type이란 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야하는지를 알려주는것이다.

JAVA에선 크게 기본형 타입괴 참조형 타입이 있다.

 

 

기본형 타입(Primitive type)

  • 총 8가지의 기본형 타입(Primitive type)을 미리 정의하여 제공한다.
  • 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다.
  • 기본값이 있기 때문에 Null이 존재하지 않는다. 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용한다.
  •  boolean
    • 저장 가능한 범위 true/ false
    • Java가 데이터를 다루는 최소 범위가 1 Byte 이기 때문에  Byte를 사용한다.
  •  char
    • Java의 경우 Unicode를 사용, 동양의 글자의 경우 2 Byte 필요하기때문에 char 의경우 2 Byte 이용한다
    • Java에서 유일하게 제공되는 unsigned 형태다.
      unsigned : 음수 없이 0부터 시작하여 양수 값만 가지는 데이터 형태
    •  char형은 unsigned 형식이기 때문에 맨 앞 비트를 음수 양수 형식 으로 사용하지 않는다.
  타입 메모리 크기 기본값
논리형 boolean false true,false
정수형 byte 0 -128 ~ 127
short 0  -32,768 ~ 32,767
int 0  -2,147,483,648 ~ 2,147,483,647
long 0L -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float 0.0F (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값
double 0.0 (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값
문자형 char '\u0000' 0 ~ 65,535
  • VM의 피연산자 스택이 피연산자를 4 Byte 단위로 저장 하기 때문 int보다 작은 자료형의 값을 계산시int 형으로 형변환 되서 연산이 수행된다.
  • 정수형 데이터를 사용하게 되면 JVM에서 기본적으로 int형 데이터타입의 데이터로 인식을 해주게 된다.
  • int형 데이터 타입의 범위를 넘어서는 long 데이터 타입의 정수를 사용하고자 하는 경우에는 정수 데이터 맨 뒤 쪽에, 접미사 'l' 이나 'L'을 붙여줘야한다.

 

참조형 타입(Reference type)

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

 

728x90

'Dev > JAVA' 카테고리의 다른 글

[Code] Refactoring , 리펙토링  (0) 2022.02.28
[Design Pattern] 빌더 패턴(Builder Pattern)  (0) 2021.12.02
[JAVA]Optional이란?  (0) 2021.06.17
[JAVA]상속(Inheritance)  (0) 2021.06.16
[JAVA]삼항연산자(Ternary Operator)  (0) 2021.06.15