# Wrapper Class
>
> Boxing and Unboxing, AutoBoxing
>
### Intro
In Java, there are primitive data types and Wrapper classes
- `Primitive data types`: int, long, float, double, boolean, etc.
- `Wrapper classes`: Integer, Long, Float, Double, Boolean, etc.
### Boxing & Unboxing
- `Boxing`
- Converting a Primitive data type to a Wrapper class
```java
int n = 100;
Integer num = new Integer(n);
```
- `Unboxing`
- Converting a Wrapper class to a Primitive data type
```java
Integer num = new Integer(100);
int n = num.intValue();
```
### Auto Boxing
- Since JDK 1.5, the Java compiler automatically performs conversion when boxing and unboxing are needed -> `Auto Boxing & Auto Unboxing`
- This feature is only available when there is a corresponding `Primitive data type` for each Wrapper class
```java
// Auto Boxing
int n = 100;
Integer num = n;
// Auto Unboxing
Integer num = new Integer(100);
int n = num;
```
- Caution: `Performance`
- Although Auto Boxing and Auto Unboxing are provided for convenience, since additional computation work is needed internally, it is better to implement `same-type operations` so that `Auto Boxing & Auto Unboxing` does not occur