我知道包装器类是什么,它们将原始类型(例如int、double等)包装到各自类的对象中。
但我想知道一个Java代码示例,它可以解释我的实际情况。
有了包装器类,没有包装器类,它会做什么。
发布于 2015-03-24 18:46:06
当Java语言被“发明”时,人们认为拥有原始类型int、long、...可以避免性能问题。几年前,还没有高效的15+编译器;所以如果你必须为10000个整数创建一个数组,那会有很大的不同。或者对于10000个整数对象。
另一方面,Java希望成为一种面向对象的语言。因此,这些原始类型附带了相应的类。你在某种意义上是正确的:如果没有原语tpyes,只有Integer,Long,...以此类推,Java类型的系统将更加一致,更加简单...但回到1997年,这种简单的类型系统在性能方面是“昂贵的”。不幸的是,人们没有考虑允许字节码中的原始类型...而不是使用Java语言本身(以及编译器在内部将Integer转换为int )。
目前的主要用途是Java编译器执行自动装箱(原始类型和“基于对象的”类型之间的自动转换);因此您可以编写如下内容:
Map<Integer, String> someMap = ...
someMap.put(5, "string")
发布于 2015-03-24 18:51:14
包装器类用于将任何数据类型转换为对象。原始数据类型不是对象;它们不属于任何类;它们是在语言本身中定义的。在Java语言中,有时需要将数据类型转换为对象
什么是包装类?
包装器类包装或封装数据类型,并使其具有对象的外观。您还可以从对象中获取原始数据类型。
观察下面的示例。
int x = 100;
Integer iObj = new Integer(x);
在Integer类的帮助下,将int数据类型(x)转换为对象(iObj)。这可以在任何需要对象的地方使用。
以下代码可用于解包对象iObj并获得原始数据类型。
int y = iObj.intValue();
System.out.println(y); // prints 100
intValue()是Integer类的一个方法,它返回一个整型数据类型。
为什么选择包装器类?
将原始数据类型转换为对象,反之亦然。
发布于 2015-03-24 18:42:52
一个简单的答案可能是,您可以使用ArrayList<Integer>
,但不能使用ArrayList<int>
。它们用于集合、多态性等,所以我认为Java设计者想要让事情变得简单,这就是为什么他们使用包装器类的概念。
Java是一种面向对象的语言,正如上面所说的,java中的一切都是对象。但是原语又如何呢?在对象的世界中,它们在某种程度上被遗漏了,也就是说,它们不能参与对象活动,比如作为对象从方法返回,以及被添加到对象集合,等等。作为这个问题的一种解决方案,Java允许您通过使用所谓的包装器类来将原语包含在对象族中。
https://stackoverflow.com/questions/29230425
复制相似问题