我知道包装类是什么,它们将原始类型(例如int,double等)包装到它们各自类的对象中。
但是,为什么我们首先需要Wrapper类?为什么不简单地使用我们拥有它们的原始类型呢?
答案 0 :(得分:67)
几个可能的原因:
答案 1 :(得分:17)
使用包装器的示例是收集时,您可以拥有ArrayList<Integer>
,但不能ArrayList<int>
与HashMap
等相同。为了获得类型安全,我们使用泛型并且泛型需要对象而不是原语。
答案 2 :(得分:12)
Java是一种面向对象的编程语言。我想你也可以问 - 为什么我们有基元,为什么一切都不仅仅是一个对象?
Java设计人员将两者分开以保持简单。当你需要适合面向对象世界的类型时,你可以使用包装器 - 比如多态,集合等。当你需要效率时,你可以使用原语。
答案 3 :(得分:8)
当需要Object时,使用包装类而不是基本类型。
在Collections中,例如,ArrayList可能包含Object的任何子类的实例,但由于原始类型不是Object,因此它们不能包含在ArrayList中。
答案 4 :(得分:4)
包装类用于将任何基本类型转换为对象。基本数据类型不是对象,它们不属于任何类,它们是在语言本身中定义的。存储在仅支持对象的数据结构中时,需要先将基元类型转换为对象,因此我们选择包装类。
答案 5 :(得分:2)
Java使用原始类型,例如int,char,double来保存 语言支持的基本数据类型。
有时需要创建这些对象表示 原始类型。
这些是仅处理此类对象的集合类。一 需要将基本类型包装在类中。
为了满足这种需要,java提供了与每种基本类型相对应的类。基本上,这些类封装或包装类中的基元类型。
因此,它们通常被称为类型包装器。输入包装 是在对象中封装基本类型的类。
包装类型为Byte,Short,Integer,Long,Character, Boolean,Double,Float。
答案 6 :(得分:1)
Java是一种面向对象的语言,就像java中所说的那样 一个东西。但原始人呢?他们有点被遗忘了 物体的世界,也就是说,它们不能参与物体 活动,例如从作为对象的方法返回,以及 被添加到对象集合等。作为解决方案 问题,Java允许您在基类中包含基元 对象使用所谓的包装类。
答案 7 :(得分:1)
有三个原因可以使用Number对象而不是基元:
来自:
答案 8 :(得分:0)
我头脑中的一个实用理由是,对象可以为null,原语不能*。如果我无法确保函数可以返回int,那么使用包装器是处理获取int的唯一方法。 Autoboxing负责其余部分。