文档

Java™ 教程-Java Tutorials 中文版
数字类
Trail: Learning the Java Language
Lesson: Numbers and Strings
Section: Numbers

数字类

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

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

但是,有时候需要使用对象代替基本类型,Java 平台为每个基本数据类型提供 wrapper (包装) 类。这些类将基本类型 "包装" 在对象中。通常,包装是由编译器完成的 - 如果你在期望对象时使用基本类型,编译器会 boxes (装箱) 基本类型到它的包装类中。类似地,如果在期望基本类型时使用数字对象,则编译器会 unboxes (拆箱) 对象。有关更多信息,请参阅 Autoboxing and Unboxing

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

Number 的类层次结构。

注意: 此处未讨论 Number 的其他四个子类。BigDecimalBigInteger 用于高精度计算。AtomicIntegerAtomicLong 用于多线程应用程序。

有三个原因应该使用 Number 对象而不是基本类型:

  1. 作为期望对象的方法的参数(通常在操作数字集合时使用)。
  2. 使用由类定义的常量,例如 MIN_VALUEMAX_VALUE,它们提供数据类型的上限和下限。
  3. 使用类方法将值转换为其他基本类型和从其他基本类型转换,转换为字符串和从字符串转换,以及在数字系统之间进行转换(十进制,八进制,十六进制,二进制)。

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

由 Number 的所有子类实现的方法
方法 描述
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 类的转换方法
方法 描述
static Integer decode(String s) 将字符串解码为整数。可以接受十进制,八进制或十六进制数字的字符串表示作为输入。
static int parseInt(String s) 返回一个整数(仅限十进制)。
static int parseInt(String s, int radix) 给定十进制,二进制,八进制或十六进制(radix 分别等于 10,2,8 或 16)数字作为输入的字符串表示形式,返回一个整数。
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 的十进制整数。

Previous page: Numbers
Next page: Formatting Numeric Print Output