数字类
使用数字时,大多数时候,您会在代码中使用基本类型。例如:
int i = 500;
float gpa = 3.65f;
byte mask = 0xff;
但是,有理由使用对象代替基元,并且 Java 平台为每种基元数据类型提供了包装器类。这些类将“原始”包装在对象中。通常,包装是由编译器完成的-如果您使用期望对象的 Primitives,则编译器会为您将 Primitives 放入其包装器类中。类似地,如果在期望使用 Primitives 的情况下使用数字对象,则编译器会为您解包该对象。有关更多信息,请参见自动装箱和拆箱
所有数字包装器类都是抽象类Number
的子类:
Note:
Number
的其他四个子类在这里没有讨论。 BigDecimal
和BigInteger
用于高精度计算。 AtomicInteger
和AtomicLong
用于多线程应用程序。
您可能使用Number
对象而不是原始对象的原因有三个:
-
作为期望对象的方法的参数(通常在处理数字集合时使用)。
-
要使用由类定义的常量,例如
MIN_VALUE
和MAX_VALUE
,它们提供数据类型的上限和下限。 -
使用类方法在其他原始类型之间进行值转换,在字符串 之间进行转换以及在数字系统(十进制,八进制,十六进制,二进制)之间进行转换。
下表列出了Number
类的所有子类实现的实例方法。
由 Number 的所有子类实现的方法
Method | Description |
---|---|
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 文档中描述了Double
和Float
对象的一些额外要求。
每个Number
类都包含其他方法,这些方法可用于在字符串 之间进行数字转换以及在数字系统之间转换。下表列出了Integer
类中的这些方法。其他Number
子类的方法类似:
转换方法,Integer
类
Method | Description |
---|---|
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 为底的整数。 |