为什么在java中有每个基本类型的包装器

Sau*_*mar 20 java primitive-types

Number子类包裹原始数值类型(Byte,Integer,Double,Float,Long,和Short).

他们的目的是什么?

rec*_*ive 17

创建了这些包装类,以便有一些方法可以将这些原始类型与各种容器类一起使用ArrayList.由于原始类型不能直接强制转换为Object引用,因此它们存储在包装类中,以允许在Object需要引用的地方使用它们.

  • 包装类还封装了对应于相应基元类型的有用行为.假设您要将double的字符串表示形式转换为实际的double.`Double.parseDouble(String)`就是这么做的.另外,让我举一个例子......考虑一个名为`salary`的`Employee`对象.通常,这将是"double"类型.假设员工刚被招募并添加到系统中,但工资尚未输入.double会假设默认值为0.值"null"可能比0更有意义:) (6认同)

Far*_*mor 12

因为包装纸是Objects.

  • Collections 需要对象
  • 对象可以instantiated为null
  • NullPointerException如果您在原语中实例化为-1,我们可以获得而不是奇怪的行为
  • "包装器"有方便的方法


Mik*_*uel 5

许多早期的面向对象语言(Smalltalk等)对所有值都有一个共同的"顶级类型",这使得更容易定义与它们穿梭的值类型无关的泛型操作.

类型理论中的顶部类型,通常缩写为顶部或由向下标记符号(⊤),是通用类型 - 该类型包含感兴趣的类型系统中的每个可能的对象.

Java没有这样的顶级类型,但Object它最接近它.具有从原始值到实例的映射Object允许其有效地用作顶部类型.

核心语言设施java.lang.reflect使用Object作为一个独立的在顶部类型-当你沉思调用你传递的方法ObjectS和回来的Object.