[JAVA] Primitive Type(원시 타입)과 Wrapper Class(래퍼 클래스)

hyelim·2023년 5월 3일
0

JAVA

목록 보기
13/13
post-thumbnail

프로젝트를 하며 long, Long 의 자료형에 대해 명확히 정리하고자 이 포스팅을 게시한다
이는 Java의 원시타입인 Primitive Type과 래퍼클래스 Wrapper Class의 차이이다.

📌 Privimitive Type(원시 타입)과 Wrapper Class(래퍼 클래스)

먼저 앞선 포스팅에서도 정리했듯이, Primitive Type에는 아래와 같은 것들이 있고, 이에 해당하는 Wrapper class들이 아래와 같이 매칭되어있다

원시 타입으로는 byte, short, int, long, float, double, boolean, char 이 있고, 래퍼 클래스로는 Byte, Short, Integer, Long, Float, Double, Boolean, Character 가 있다

📌 활용법예시

int primitive = 10;
Integer wrapper = 10;

wrapper = null;  // null 값이 들어갈 수 있습니다.
String str = wrapper.toString();  // 메서드를 사용할 수 있습니다.
ArrayList<Integer> integerList = new ArrayList();  // 제네릭에 사용할 수 있습니다.

int와 Integer를 예로 든다면 int의 경우 단순하게 숫자로서만 사용할 수 있지만 Integer의 경우 객체 형태로 생성되어 null 값이 들어갈 수 있고, .toString과 같은 메서드를 사용할 수 있으며, 제네릭 의 형태로도 사용할 수 있다.

📌 어떤 상황에서 primitive type을 사용하고 어떤 상황에서 wrapper class를 사용?

일반적으로는 primitive type을 많이 사용
wrapper의 경우 결국 객체를 생성하는 것인데, 굳이 객체가 필요한 경우가 없거나 null값을 반환할 필요가 없다면 객체를 생성하지 않고 primitive type을 사용하는 것이 메모리의 측면에서 효율적
wrapper의 경우 객체이기 때문에 == 연산이 아닌 equals() 메소드를 이용해서 값을 비교해야 합니다. 그렇기 때문에 직관적으로 값을 비교함에 있어서도 primitive가 편리

객체에서의 == 연산은 두 객체의 주소를 비교하는 것이다

📌 Boxing vs UnBoxing

Boxing

원시 타입을 포장클래스로 변환하는 것

int primitive = 30;
Integer wrapper = new Integer(primitive);

UnBoxing

포장클래스를 원시타입으로 변환하는 것

Integer wrapper = new Integer(30);
int primitive = wrapper.intValue();

JDK 1.5 부터는 autoBoxing, autoUnBoxing 이라는 것이 적용되어 자동적으로 primitive type과 wrapper class를 형변환 할 수 있다

출처

https://wildeveloperetrain.tistory.com/12
https://velog.io/@hadoyaji/int%EC%99%80-Integer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80

profile
기록용

0개의 댓글