원시 타입으로는 byte, short, int, long, float, double, boolean, char 이 있고, 래퍼 클래스로는 Byte, Short, Integer, Long, Float, Double, Boolean, Character 가 있습니다.
그렇다면 Primitive Type과 Wrapper Class는 무슨 차이가 있을까요?
결론적으로 Wrapper Class는 Primitive Type을 객체화한 것입니다.
* wrap : 포장하다
말 그대로 원시 타입을 객체로 포장한 것입니다.
int와 Integer를 예로 든다면
int의 경우 단순하게 숫자로서만 사용할 수 있지만
Integer의 경우 객체 형태로 생성되어 null 값이 들어갈 수 있고, .
toString과 같은 메서드를 사용할 수 있으며,
제네릭 <Integer>의 형태로도 사용할 수 있게 됩니다.
그렇다면 어떤 상황에서 primitive type을 사용하고 어떤 상황에서 wrapper class를 사용할까요?
결국 사용 용도에 따라 다르겠지만 일반적으로는 primitive type을 많이 사용합니다. wrapper의 경우 결국 객체를 생성하는 것인데, 굳이 객체가 필요한 경우가 없거나 null값을 반환할 필요가 없다면 객체를 생성하지 않고 primitive type을 사용하는 것이 메모리의 측면에서 효율적입니다.
또한 wrapper의 경우 객체이기 때문에 == 연산이 아닌 equals() 메소드를 이용해서 값을 비교해야 합니다. 그렇기 때문에 직관적으로 값을 비교함에 있어서도 primitive가 편리합니다.
* 객체에서의 == 연산은 두 객체의 주소 값을 비교하는 것
https://wildeveloperetrain.tistory.com/12
Java Primitive Type (원시 타입), Wrapper Class (래퍼 클래스) 차이점
프로젝트를 하면서 대부분의 경우에 Long을 쓰면서 가끔 어떤 경우에서는 IntelliJ가 자동으로 Long을 long으로 바꿔주는 경우가 있었습니다. 왜 그런지 이유를 몰랐고, 궁금하지도 않았다는 것을 반
wildeveloperetrain.tistory.com
'사소한 Tip과 개념들' 카테고리의 다른 글
saveAll과 deleteAll(deleteAllInBatch) (0) | 2022.12.09 |
---|---|
JWT에 대해 알아보자! (0) | 2022.12.02 |
깃 컨벤션 (0) | 2022.11.29 |
패키지 명명규칙, 명명법 (0) | 2022.11.28 |
포스트맨(Postman)의 유용한 기능 토큰 전역변수로 저장 (0) | 2022.11.26 |