乐趣区

Java™ 教程(数字)

数字
本节首先讨论 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 的十进制整数。

上一篇:抽象方法和类

退出移动版