# Java 中的包装类

> 原文： [https://beginnersbook.com/2017/09/wrapper-class-in-java/](https://beginnersbook.com/2017/09/wrapper-class-in-java/)

在 [OOPs 概念](https://beginnersbook.com/2013/04/oops-concepts/)指南中，我们了解到面向对象编程都是关于对象的。八种原始数据类型 byte，short，int，long，float，double，char 和 boolean 不是对象， **Wrapper 类用于将原始数据类型转换为对象**，如 int 到 Integer 等。让我们采取一个简单的例子来理解为什么我们需要 java 中的包装类。

**例如：**在 Java 中使用[集合时，我们使用泛型来实现类型安全：ArrayList＆lt; Integer＆gt;而不是这个 ArrayList＆lt; int＆gt;。 Integer 是 int 基本类型的包装类。在这种情况下，我们使用包装类，因为泛型需要对象而不是基元。还有其他几个原因你更喜欢包装类而不是原始类型，我们将在本文中讨论它们。](https://beginnersbook.com/java-collections-tutorials/)

| 原始 | 包装类 |
| 布尔 | 布尔 |
| 烧焦 | 字符 |
| 字节 | 字节 |
| 短 | 短 |
| INT | 整数 |
| 长 | 长 |
| 浮动 | 浮动 |
| 双 | 双 |

## 为什么我们需要 Java 中的包装类

1.正如我上面提到的，我们需要包装器的原因之一是在集合 API 中使用它们。另一方面，与基本类型相比，包装器对象拥有更多的内存。因此，当您需要效率时使用原始类型，并在需要对象而不是原始类型时使用包装类。

原始数据类型不是对象，因此它们不属于任何类。存储在仅支持对象的数据结构中时，需要首先将基本类型转换为对象，我们可以通过使用包装类来完成。

例：

```java
HashMap<Integer, String> hm = new HashMap<Integer, String>();
```

因此，对于类型安全，我们使用包装类。这样我们就可以确保这个 [HashMap](https://beginnersbook.com/2013/12/hashmap-in-java-with-example/) 键是整数类型，值是字符串类型。
2.包装类对象允许空值，而原始数据类型不允许空值。

让我们举几个例子来了解转换的工作原理：

## 包装类示例 1：将基本类型转换为包装器对象

```java
public class JavaExample{  
   public static void main(String args[]){  
	//Converting int primitive into Integer object  
	int num=100;  
	Integer obj=Integer.valueOf(num);  

	System.out.println(num+ " "+ obj);  
   }
}
```

输出：

```java
100 100
```

如您所见，原始[数据类型](https://beginnersbook.com/2017/08/data-types-in-java/)和对象具有相同的值。您可以使用 obj 代替 num，无论您需要将 num 的值作为对象传递。

## 包装类示例 2：将包装类对象转换为基元

```java
public class JavaExample{  
   public static void main(String args[]){  
	//Creating Wrapper class object 
	Integer obj = new Integer(100);  

	//Converting the wrapper object to primitive
	int num = obj.intValue();

	System.out.println(num+ " "+ obj);  
   }
}
```

Output:

```java
100 100
```