为什么在Java中有包装类?

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

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

几个可能的原因:

  • 所以可能有一个空值
  • 包含在一个集合中
  • 一般对待/多态作为一个对象与其他对象

当使用包装器的例子是集合,你可以有一个ArrayList<Integer> ,但不是一个ArrayList<int>HashMap相同等。为了获得types安全性,我们使用generics和generics需要的对象不是基元。

Java是一种面向对象的编程语言。 我想你也可以问 – 为什么我们有原始的东西,为什么一切都不只是一个对象?

Javadevise师保持这两个分开来保持简单。 当你需要符合面向对象的世界的types时,你可以使用包装器,比如多态性,集合等等。当你需要效率的时候,你可以使用原语。

当需要一个对象时,使用包装类而不是原始types。

例如,在集合中,ArrayList可能包含Object的任何子类的实例,但是由于基元types不是Object,因此它们不能包含在ArrayList中。

包装类用于将任何原始types转换为对象。原始数据types不是对象,它们不属于任何类,它们是在语言本身中定义的。 当存储在仅支持对象的数据结构中时,需要将基本types转换为对象,所以我们去包装类。

包装类:

  1. Java使用基本types,如int,char,double来保存语言支持的基本数据types。

  2. 有时需要创build这些基元types的对象表示。

  3. 这些是仅处理这些对象的集合类。 我们需要将原始types包装在一个类中。

  4. 为了满足这个需求,java提供了对应于每个基本types的类。 基本上,这些类封装或包装类中的原始types。

  5. 因此,它们通常被称为types包装器。 types包装器是封装对象内的基本types的类。

  6. 包装types是Byte,Short,Integer,Long,Character,Boolean,Double,Float。

Java是一种面向对象的语言,正如所说的,Java中的所有东西都是一个对象。 但是原始的呢? 它们被排除在对象的世界之外,也就是说,它们不能参与对象活动,比如从方法返回的对象,被添加到对象集合等。 作为这个问题的一个解决scheme,Java允许你通过使用所谓的包装类来把原语包含在对象族中。

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

  1. 作为一个期望对象的方法的参数(在处理数字集合时经常使用)。
  2. 使用类定义的常量(如MIN_VALUE和MAX_VALUE),它们提供数据types的上限和下限。
  3. 使用类方法将值转换为其他基本types以及从其他基本types转换值,转换为string和从string转换,以及在数字系统(十进制,八进制,hex,二进制)之间进行转换。

来自:

数字类

一个实际的理由是,对象可以是空的,原语不能*。 如果我不能确保一个函数可以返回一个int,使用包装是唯一的方法来处理获得我期望的int。 自动装箱照顾其余部分。