数字本节首先讨论java.lang包中的Number类,它的子类,以及使用这些类的实例化而不是原始数字类型的情况。本节还介绍了PrintStream和DecimalFormat类,它们提供了编写格式化数字输出的方法。最后,讨论了java.lang中的Math类,它包含数学函数,以补充语言中内置的运算符,该类具有三角函数,指数函数等方法。数字类使用数字时,大多数时候在代码中使用基元类型,例如:int i = 500;float gpa = 3.65f;byte mask = 0xff;但是,有理由使用对象代替基元,Java平台为每个基元数据类型提供包装类,这些类将基元“包装”在对象中。通常,包装由编译器完成 — 如果在需要对象的地方使用基元,编译器会在包装器类中为你封装基元,类似地,如果在期望基元时使用数字对象,则编译器会为你拆箱对象,有关更多信息,请参阅自动装箱和拆箱。所有数字包装类都是抽象类Number的子类:注意:这里没有讨论其他四个Number的子类,BigDecimal和BigInteger用于高精度计算,AtomicInteger和AtomicLong用于多线程应用程序。有三个原因可以使用Number对象而不是基元:作为期望对象的方法的参数(通常在操作数字集合时使用)。使用由类定义的常量(如MIN_VALUE和MAX_VALUE),它们提供数据类型的上限和下限。使用类方法将值转换为其他基本类型或从其他基本类型转换值,转换为字符串和从字符串转换,以及在数字系统之间进行转换(十进制、八进制、十六进制、二进制)。下表列出了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文档中描述了Double和Float对象的一些额外要求。每个Number类都包含其他方法,这些方法可用于数字与字符串之间的转换和用于数字系统之间的转换,下表列出了Integer类中的这些方法,其他Number子类的方法类似:方法描述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的十进制整数。上一篇:抽象方法和类