数字
本节首先讨论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()。
上一篇:抽象方法和类 下一篇:格式化数字打印输出文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72898.html
Java™ 教程 Java教程是为JDK 8编写的,本页面中描述的示例和实践没有利用在后续版本中引入的改进。 Java教程是希望使用Java编程语言创建应用程序的程序员的实用指南,其中包括数百个完整的工作示例和数十个课程,相关课程组被组织成教程。 覆盖基础知识的路径 这些教程以书籍的形式提供,如Java教程,第六版,前往Amazon.com购买。 入门 介绍Java技术和安装Java开发软件并使用...
在数字和字符串之间转换 将字符串转换为数字 通常,程序以字符串对象中的数字数据结束 — 例如,用户输入的值。 包装原始数字类型(Byte、Integer、Double、Float、Long和Short)的Number子类每个都提供一个名为valueOf的类方法,该方法将字符串转换为该类型的对象。下面是一个示例ValueOfDemo,它从命令行获取两个字符串,将它们转换为数字,并对值执行算术运算: ...
格式化数字打印输出 之前你已经看到使用print和println方法将字符串打印到标准输出(System.out),由于所有数字都可以转换为字符串(你将在本课后面看到),你可以使用这些方法打印出任意的字符串和数字混合,但是,Java编程语言还有其他方法,可以在包含数字时对打印输出进行更多控制。 printf和format方法 java.io包中包含一个PrintStream类,它有两种格式化方法可...
变量 正如你在上一课中所了解到的,对象将其状态存储在字段中。 int cadence = 0; int speed = 0; int gear = 1; 什么是对象?讨论向你介绍了字段,但你可能还有一些问题,例如:命名字段的规则和约定是什么?除了int之外,还有哪些其他数据类型?在声明字段时是否必须初始化字段?如果未明确初始化字段,是否为字段分配了默认值?我们将在本课中探讨这些问题的答案,但在我们...
字符串 在Java编程中广泛使用的字符串是一系列字符,在Java编程语言中,字符串是对象。 Java平台提供String类来创建和操作字符串。 创建字符串 创建字符串的最直接方法是编写: String greeting = Hello world!; 在这种情况下,Hello world!是一个字符串文字 — 代码中的一系列字符,用双引号括起来,每当它在代码中遇到字符串文字时,编译器就会创建一个带...
阅读 1324·2021-09-10 10:51
阅读 2805·2019-08-30 15:54
阅读 3302·2019-08-29 17:11
阅读 888·2019-08-29 16:44
阅读 1372·2019-08-29 13:47
阅读 1058·2019-08-29 13:47
阅读 1458·2019-08-29 12:23
阅读 1009·2019-08-28 18:18