为什么在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转换为对象,所以我们去包装类。
包装类:
-
Java使用基本types,如int,char,double来保存语言支持的基本数据types。
-
有时需要创build这些基元types的对象表示。
-
这些是仅处理这些对象的集合类。 我们需要将原始types包装在一个类中。
-
为了满足这个需求,java提供了对应于每个基本types的类。 基本上,这些类封装或包装类中的原始types。
-
因此,它们通常被称为types包装器。 types包装器是封装对象内的基本types的类。
-
包装types是Byte,Short,Integer,Long,Character,Boolean,Double,Float。
Java是一种面向对象的语言,正如所说的,Java中的所有东西都是一个对象。 但是原始的呢? 它们被排除在对象的世界之外,也就是说,它们不能参与对象活动,比如从方法返回的对象,被添加到对象集合等。 作为这个问题的一个解决scheme,Java允许你通过使用所谓的包装类来把原语包含在对象族中。
有三个原因可以使用Number对象而不是原始对象:
- 作为一个期望对象的方法的参数(在处理数字集合时经常使用)。
- 使用类定义的常量(如MIN_VALUE和MAX_VALUE),它们提供数据types的上限和下限。
- 使用类方法将值转换为其他基本types以及从其他基本types转换值,转换为string和从string转换,以及在数字系统(十进制,八进制,hex,二进制)之间进行转换。
来自:
数字类
一个实际的理由是,对象可以是空的,原语不能*。 如果我不能确保一个函数可以返回一个int,使用包装是唯一的方法来处理获得我期望的int。 自动装箱照顾其余部分。