Developer Cafe

int와 Integer 본문

개발자답게

int와 Integer

개발자 카페 2022. 10. 27. 15:33
728x90

int와 Integer 차이

  • int (Primitive 자료형)
    • 자료형을 의미
      • int, float, long, double과 같은 하나의 primitive 자료형을 의미
    • 산술 연산 가능
    • null 로 초기화 불가능
      • 0으로 초기화 가능
  • Integer (Wrapper 클래스-객체)
    • Wrapper 클래스입니다.
    • Unboxing을 하지 않으면 산술 연산이 불가능
    • null값은 처리 가능
      • null값 처리가 용이해서 SQL 과 연동할 경우 처리가 용이
    • 직접적인 산술연산은 불가능

래퍼 클래스(Wrapper class)

프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있습니다.

예를 들어, 메소드의 인수로 객체 타입만이 요구되면, 기본 타입의 데이터를 그대로 사용할 수는 없습니다.

이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 합니다.

기본 타입 래퍼 클래스
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

이렇게 8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 합니다.

래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 줍니다.

 

이러한 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공됩니다

박싱(Boxing)과 언박싱(UnBoxing)

래퍼 클래스(Wrapper class)는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없습니다.

단지, 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있습니다

 

  • Boxing
    • Primitive Type -> Wrapper class
    • Integer a = new Integer(10);
  • Unboxing
    • Wrapper class -> Primitive Type
    • int b = a.intValue();

오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)

JDK 1.5부터는 박싱과 언박싱이 필요한 상황에서 자바 컴파일러가 이를 자동으로 처리해 줍니다.

이렇게 자동화된 박싱과 언박싱을 오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)이라고 부릅니다.

 

다음 예제는 박싱과 언박싱, 오토 박싱과 오토 언박싱의 차이를 보여주는 예제입니다.

Integer num = new Integer(17); // 박싱
int n = num.intValue();        // 언박싱
System.out.println(n);	 	   // 17

Character ch = 'X'; // Character ch = new Character('X'); : 오토박싱
char c = ch;        // char c = ch.charValue();           : 오토언박싱
System.out.println(c);		   // X

 

728x90
Comments