# 数字类

> 原文： [https://docs.oracle.com/javase/tutorial/java/data/numberclasses.html](https://docs.oracle.com/javase/tutorial/java/data/numberclasses.html)

使用数字时，大多数时候在代码中使用基元类型。例如：

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

```

但是，有理由使用对象代替基元，Java 平台为每种基本数据类型提供 _ 包装器 _ 类。这些类将对象“包装”在对象中。通常，包装是由编译器完成的 - 如果你使用一个需要一个对象的原始，编译器 _ 就会在你的包装类中为 _ 包装原始。类似地，如果在期望基元时使用数字对象，编译器 _ 会为您取消 _ 对象。有关更多信息，请参阅 [Autoboxing 和 Unboxing](autoboxing.html)

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

<center>![The class hierarchy of Number.](img/a4e2b4a6c5d11518cd6e06d798958afa.jpg)</center>

* * *

**Note:** There are four other subclasses of `Number` that are not discussed here. `BigDecimal` and `BigInteger` are used for high-precision calculations. `AtomicInteger` and `AtomicLong` are used for multi-threaded applications.

* * *

有三个原因可以使用`Number`对象而不是原始：

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

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

<caption style="font-weight: bold">Methods Implemented by all Subclasses of Number</caption>
| 方法 | 描述 |
| --- | --- |
| `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 （简短的另一个）` | 将此`Number`对象与参数进行比较。 |
| `boolean equals(Object obj)` | 确定此数字对象是否等于参数。
如果参数不是`null`并且是相同类型且具有相同数值的对象，则方法返回`true`。
Java API 文档中描述了`Double`和`Float`对象的一些额外要求。 |

每个`Number`类都包含其他方法，这些方法可用于将数字转换为字符串以及从字符串转换数字以及在数字系统之间进下表列出了`Integer`类中的这些方法。其他`Number`子类的方法类似：

<caption style="font-weight: bold">Conversion Methods, `Integer` Class</caption>
| 方法 | 描述 |
| --- | --- |
| `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 的十进制整数。 |