# 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`不是对象， **包装器类用于将原始数据类型转换为对象**，如`int`到`Integer`等。让我们采取一个简单的例子来理解为什么我们需要 java 中的包装类。

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

| 原始 | 包装类 |
| --- | --- |
| `boolean` | `Boolean` |
| `char` | `Char` |
| `byte` | `Byte` |
| `short` | `Short` |
| `int` | `Integer` |
| `long` | `Long` |
| `float` | `Float` |
| `double` | `Double` |

## 为什么我们需要 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);  
   }
}
```

输出：

```java
100 100
```