본문 바로가기
쿤즈 Dev/Java

[Java] Primitive(원시) 자료형과 Wrapper 클래스

by :)Koon 2021. 10. 8.

Java의 사용을 시작하면서 한 가지 궁금증이 발생하는 부분이 있습니다. 보통 자료형을 나타내는 int, long, float, double 등과 같은 자료형이 있으며 이와 동일하게 Integer, Long, Float, Double 등과 같은 클래스형 자료형이 있습니다.

이 둘의 차이는 무엇이며 어떤 처리를 할 수 있는지 알아보도록 할게요.


Primitive(원시) 자료형과 Wrapper 클래스

정수를 나타내는 자료형을 사용할 때에는 보통 int를 사용합니다.

int num = 3;

num이라는 변수를 이용해서 산술연산(+, -, *, /)등을 바로 이용할 수 있습니다. 이러한 자료형을 Primitive(원시) 자료형이라 합니다.

 

Wrapper 클래스로 정수를 나타내는 자료형은 Integer입니다.

Integer num = 3;
Integer num = new Integer(3);

Integer는 원시 자료형인 int를 클래스로 만들어 놓은 것입니다.

Integer 클래스를 확인해 보면 위와같이 만들어진 것을 볼 수 있습니다. 나머지 자료형들도 모두 클래스로 존재합니다.


Boxing과 Unboxing

원시 자료형 int와 Wrapper 클래스인 Integer는 자료형(데이터 타입)을 변화시킬 수 있습니다. int는 Integer로, 혹은 그 반대로 Integer는 int로 변경이 가능합니다.

이때 int를 Integer로 변화시키는것을 Boxing, Integer를 int로 변화시키는 것을 Unboxing이라 합니다.

 

위에서 예제로 들었던 내용을 다시 보겠습니다.

Integer num = 3; // Auto Boxing
Integer num = new Integer(3);
System.out.println(num + num); // 6

클래스로 선언된 num 객체가 있습니다. 출력하기 위해서 System.out.println() 메소를 사용합니다. 이때 두 클래스를 더하는 num + num을 입력했고 출력을 해 보았습니다. 결과는 6, 정상적으로 출력됩니다.

 

클래스를 더하는 행위는 사실 계산할 수 없어야 합니다. 하지만 Java의 컴파일러는 Integer로 선언된 num 객체의 값을 자동으로 Unboxing 해 주어 int로 변환하고 3+3을 계산해서 결과를 내줍니다.

 

그렇다면 Integer(Wrapper 클래스)는 어떤 역할을 하는 걸까요?


Wrapper 클래스의 메소드들

Integer 클래스로 선언된 객체들은 내부 메서드를 사용할 수 있습니다. 즉 단순하게 int 원시 자료형으로 선언되었을 때보다 여러 가지 내부 메소드를 이용해서 값을 변화시킬 수 있도록 제공하고 있습니다.

 

Integer 클래스는 다시 Number라는 클래스를 상속받고 있는데요. Number 클래스 내부를 보시면 여러가지 메서드들이 선언되어 있습니다.

제공되는 함수를 이용해서 손쉽게 값을 변화시킬 수 있는 것이 큰 장점입니다.


이번 포스팅에서는 Primitive(원시) 자료형과 Wrapper 클래스 사이의 관계에 대해서 알아보았습니다. 아무 생각 없이 지나갈 수 있는 부분이지만 막상 왜 그런지 알고 사용하면 조금 더 편하게 사용할 수 있는 것이 개발 언어의 특징인 것 같습니다. 도움이 되셨으면 합니다. 이상입니다.

댓글