多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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 ```