在 OOPs 概念指南中,我们了解到面向对象编程都是关于对象的。八种原始数据类型byte
,short
,int
,long
,float
,double
,char
和boolean
不是对象, 包装器类用于将原始数据类型转换为对象,如int
到Integer
等。让我们采取一个简单的例子来理解为什么我们需要 java 中的包装类。
例如:在 Java 中使用集合时,我们使用泛型来实现类型安全:ArrayList<Integer>
而不是这个ArrayList<int>
。Integer
是int
基本类型的包装类。在这种情况下,我们使用包装类,因为泛型需要对象而不是原始类型。还有其他几个原因你更喜欢包装类而不是原始类型,我们将在本文中讨论它们。
原始 | 包装类 |
---|---|
boolean |
Boolean |
char |
Char |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
为什么我们需要 Java 中的包装类
- 正如我上面提到的,我们需要包装器的原因之一是在集合 API 中使用它们。另一方面,与基本类型相比,包装器对象拥有更多的内存。因此,当您需要效率时使用原始类型,并在需要对象而不是原始类型时使用包装类。
原始数据类型不是对象,因此它们不属于任何类。存储在仅支持对象的数据结构中时,需要首先将基本类型转换为对象,我们可以通过使用包装类来完成。
例:
HashMap<Integer, String> hm = new HashMap<Integer, String>();
因此,对于类型安全,我们使用包装类。这样我们就可以确保这个HashMap
键是整数类型,值是字符串类型。
- 包装类对象允许空值,而原始数据类型不允许空值。
让我们举几个例子来了解转换的工作原理:
包装类示例 1:将基本类型转换为包装器对象
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);
}
}
输出:
100 100
如您所见,原始数据类型和对象具有相同的值。您可以使用obj
代替num
,无论您需要将num
的值作为对象传递。
包装类示例 2:将包装类对象转换为基本对象
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);
}
}
输出:
100 100