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 클래스 사이의 관계에 대해서 알아보았습니다. 아무 생각 없이 지나갈 수 있는 부분이지만 막상 왜 그런지 알고 사용하면 조금 더 편하게 사용할 수 있는 것이 개발 언어의 특징인 것 같습니다. 도움이 되셨으면 합니다. 이상입니다.
'쿤즈 Dev > Java' 카테고리의 다른 글
[Java] Records (JEP 359) 레코드에 대해서 알아보자 (0) | 2023.07.07 |
---|---|
[Java] LocalDateTime 값을 String 포멧으로 변환하는 방법 (0) | 2022.03.16 |
[Java] 데이터 타입 사용해서 화면에 출력하기 (0) | 2021.09.14 |
[Java] 자바에서 변수 사용하는 방법 (feat. 키워드, 데이터타입) (0) | 2021.09.13 |
[Java] stream() 메소드를 이용해서 Collection 객체 가공하는 방법 (0) | 2021.08.18 |
댓글