자바 데이터 타입은 크게 두 가지로 나뉜다.

 

1. 기본 타입(Primitive Type)

자바 기본 타입은 총 8가지로, 메모리 위치에 정수, 실수, 논리 값을 직접 저장한다. 런타임 데이터 영역에서 stack 영역에 생성되고 기본 타입을 사용할 때는 메모리 사용 크기에 주의해 표현할 수 있는 수를 벗어난 값을 저장하지 않도록 한다. 값의 종류는 다음과 같다. 

  • 정수 값 (일반적으로 n bit 메모리를 사용한다면 -2^(n-1) ~ (2^(n-1))-1 사이에서 값을 저장할 수 있다.)
    • byte: 8bit
    • char: 16bit (유니코드 포함)
    • short: 16bit
    • int: 32bit
    • long: 64bit
  • 실수 값
    • float: 32bit
    • double: 64bit
  • 논리 값
    • boolean: 8bit

 

2. 참조 타입(Reference Type)

자바 참조 타입은 크게 4가지며, 메모리 위치에 갖고자 하는 값이 저장된 주소를 저장한다. 참조 타입에서 참고하고자 하는 실제 값은 기본 타입과 달리 heap 영역에 생성되므로 참조되지 않는 변수는 garbage collection에 의해 삭제되기도 한다. 참조 타입 값을 비교하기 위해서는 주소를 비교하게 되는 == 연산자가 아닌, equals() 메서드를 사용해야 한다.

  • 배열
  • enum
  • 문자열
  • 클래스
  • 인터페이스

 

3. 자바에서 int, Integer는 뭐가 다른가?

int는 기본 타입이고 Integer는 Wrapper class, 즉 참조 타입이다. 사용하려는 용도에 따라 두 타입 중 하나를 선택할 수 있다.  parseInt()는 String을 int로 반환하고 valueOf()는 String을 Integer 클래스로 반환한다.

  int Integer
데이터 타입 기본 타입 참조 타입 (Wrapper Class)
특징 산술 연산이 가능하지만, null 초기화 불가 boxing 상태에서는 산술 연산이 불가하지만, null 처리가 용이해 SQL 연동 시 사용한다.

Boxing, unboxing 자료형 변환하기

// boxing: primitive Type -> reference Type
Integer referenceInt = new Integer(primitiveInt);

// unboxing: reference Type -> primitive Type
int primitiveInt = referenceInt.intValue();

// Auto boxing: primitive Type -> reference Type
int primitiveInt1 = 1;
Integer referenceInt = primitiveInt;

// Auto unboxing: reference Type -> primitive Type
int primitiveInt2 = referenceInt;

+ Recent posts