数字类

使用数字时,大多数时候,您会在代码中使用基本类型。例如:

int i = 500;
float gpa = 3.65f;
byte mask = 0xff;

但是,有理由使用对象代替基元,并且 Java 平台为每种基元数据类型提供了包装器类。这些类将“原始”包装在对象中。通常,包装是由编译器完成的-如果您使用期望对象的 Primitives,则编译器会为您将 Primitives 放入其包装器类中。类似地,如果在期望使用 Primitives 的情况下使用数字对象,则编译器会为您解包该对象。有关更多信息,请参见自动装箱和拆箱

所有数字包装器类都是抽象类Number的子类:

Number 的类层次结构。

Note:

Number的其他四个子类在这里没有讨论。 BigDecimalBigInteger用于高精度计算。 AtomicIntegerAtomicLong用于多线程应用程序。

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

  • 作为期望对象的方法的参数(通常在处理数字集合时使用)。

  • 要使用由类定义的常量,例如MIN_VALUEMAX_VALUE,它们提供数据类型的上限和下限。

  • 使用类方法在其他原始类型之间进行值转换,在字符串 之间进行转换以及在数字系统(十进制,八进制,十六进制,二进制)之间进行转换。

下表列出了Number类的所有子类实现的实例方法。

由 Number 的所有子类实现的方法

MethodDescription
byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue()将此Number对象的值转换为返回的原始数据类型。
int compareTo(Byte anotherByte) int compareTo(Double anotherDouble) int compareTo(Float anotherFloat) int compareTo(Integer anotherInteger) int compareTo(Long anotherLong) int compareTo(Short anotherShort)将此Number对象与参数进行比较。
boolean equals(Object obj)确定此数字对象是否等于参数。


如果参数不是null并且是相同类型且具有相同数值的对象,则方法返回true
Java API 文档中描述了DoubleFloat对象的一些额外要求。

每个Number类都包含其他方法,这些方法可用于在字符串 之间进行数字转换以及在数字系统之间转换。下表列出了Integer类中的这些方法。其他Number子类的方法类似:

转换方法,Integer

MethodDescription
static Integer decode(String s)将字符串 解码为整数。可以接受十进制,八进制或十六进制数字的字符串 表示形式作为 Importing。
static int parseInt(String s)返回一个整数(仅十进制)。
static int parseInt(String s, int radix)返回整数,给定字符串 表示形式的十进制,二进制,八进制或十六进制(radix分别等于 10、2、8 或 16)数字作为 Importing。
String toString()返回表示此Integer值的String对象。
static String toString(int i)返回表示指定整数的String对象。
static Integer valueOf(int i)返回保存指定图元值的Integer对象。
static Integer valueOf(String s)返回一个Integer对象,其中包含指定的字符串 表示形式的值。
static Integer valueOf(String s, int radix)返回一个Integer对象,该对象保存指定字符串 表示形式的整数值,并用 radix 的值进行解析。例如,如果 s =“ 333”且 radix = 8,则该方法返回八进制数 333 的以 10 为底的整数。