为什么Java中有包装类?

时间:2010-08-26 20:03:08

标签: java

我知道包装类是什么,它们将原始类型(例如int,double等)包装到它们各自类的对象中。

但是,为什么我们首先需要Wrapper类?为什么不简单地使用我们拥有它们的原始类型呢?

9 个答案:

答案 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)

包装类:

  1. Java使用原始类型,例如int,char,double来保存 语言支持的基本数据类型。

  2. 有时需要创建这些对象表示 原始类型。

  3. 这些是仅处理此类对象的集合类。一 需要将基本类型包装在类中。

  4. 为了满足这种需要,java提供了与每种基本类型相对应的类。基本上,这些类封装或包装类中的基元类型。

  5. 因此,它们通常被称为类型包装器。输入包装  是在对象中封装基本类型的类。

  6. 包装类型为Byte,Short,Integer,Long,Character, Boolean,Double,Float。

答案 6 :(得分:1)

  

Java是一种面向对象的语言,就像java中所说的那样   一个东西。但原始人呢?他们有点被遗忘了   物体的世界,也就是说,它们不能参与物体   活动,例如从作为对象的方法返回,以及   被添加到对象集合等。作为解决方案   问题,Java允许您在基类中包含基元   对象使用所谓的包装类。

答案 7 :(得分:1)

有三个原因可以使用Number对象而不是基元:

  1. 作为期望对象的方法的参数(通常在何时使用 操纵数字集合。)。
  2. 使用类定义的常量,例如MIN_VALUE和 MAX_VALUE,提供数据类型的上限和下限。
  3. 使用类方法将值与其他方法进行转换 原始类型,用于转换为字符串和从字符串转换 在数字系统之间转换(十进制,八进制,十六进制, 二进制)。
  4. 来自:

    The Numbers Classes

答案 8 :(得分:0)

我头脑中的一个实用理由是,对象可以为null,原语不能*。如果我无法确保函数可以返回int,那么使用包装器是处理获取int的唯一方法。 Autoboxing负责其余部分。

相关问题