数字
本节首先讨论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的十进制整数。 |
数字总结
你可以使用其中一个包装类 — Byte
、Double
、Float
、Integer
、Long
或Short
— 来在对象中包装许多基本类型,Java编译器会在必要时自动为你包装(装箱)基元,并在必要时再将它们拆箱。
Number
类包括常量和有用的类方法,MIN_VALUE
和MAX_VALUE
常量包含该类型对象可包含的最小值和最大值,byteValue
、shortValue
和类似方法将一种数字类型转换为另一种数字类型,valueOf
方法将字符串转换为数字,toString
方法将数字转换为字符串。
要格式化包含输出数字的字符串,可以使用PrintStream
类中的printf()
或format()
方法,或者,你可以使用NumberFormat
类使用模式自定义数字格式。
Math
类包含用于执行数学函数的各种类方法,包括指数、对数和三角函数方法,Math
还包括基本算术函数,例如绝对值和舍入,以及用于生成随机数的方法random()
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。