通常,当我们处理数值时,我们会使用诸如 byte, int, long, double 等基本数据类型。例如:
int i = 5000;
float gpa = 13.65f;
double mask = 125;
有时,可能需要使用对象而不是基本数据类型。为了实现这一点,Java 提供了包装类。所有的包装类 (Integer, Long, Byte, Double, Float, Short) 都是抽象类 Number 的子类。
Java Number 类
Number 类是一个抽象类,位于 java.lang 包中。它是代表可以转换为基本数据类型的数值类的超类,例如 byte, short, int, long, float, 和 double。

包装类的对象包含或包裹它们各自的基本数据类型。将基本数据类型转换为对象称为装箱(boxing),这一过程由编译器自动处理。因此,当你使用包装类时,只需要将基本数据类型的值传递给包装类的构造函数即可。
包装对象将再次转换回基本数据类型,这个过程称为拆箱(unboxing)。Number 类是 java.lang 包的一部分。
下面是一个装箱和拆箱的例子:
public class Test {
public static void main(String args[]) {
Integer x = 5;
x = x + 10;
System.out.println(x);
}
}
输出将是:
15
当 x 被赋值一个整数值时,编译器会将整数装箱,因为 x 是一个 Integer 对象。稍后,x 被拆箱以便可以作为一个整数进行加法运算。
Java Number 类的方法
以下是 Number 类的所有子类实现的实例方法列表:
| 序号 |
方法 |
描述 |
| 1 |
byteValue() |
返回指定数字的字节值。 |
| 2 |
doubleValue() |
返回指定数字的双精度浮点数值。 |
| 3 |
floatValue() |
返回指定数字的单精度浮点数值。 |
| 4 |
intValue() |
返回指定数字的整数值。 |
| 5 |
longValue() |
返回指定数字的长整数值。 |
| 6 |
compareTo(Number anotherNumber) |
比较此 Number 对象与参数。 |
| 7 |
equals(Object obj) |
判断此数字对象是否等于参数。 |
| 8 |
valueOf(String s) |
返回持有指定原始值的 Integer 对象。 |
| 9 |
toString() |
返回表示指定数字值的 String 对象。 |
| 10 |
parseInt(String s) |
用于从特定字符串获得基本数据类型值。 |
| 11 |
min(Number a, Number b) |
返回两个参数中的较小值。 |
| 12 |
max(Number a, Number b) |
返回两个参数中的较大值。 |
请注意,parseInt 和一些其他方法实际上是在 Integer 类等包装类中定义的,而不是 Number 抽象类的一部分。
Java Number:包装类
以下是 Number 类的所有子类列表:
| 序号 |
类 |
描述 |
| 1 |
Boolean |
包装基本类型 boolean 的值到对象中。 |
| 2 |
Byte |
包装基本类型 byte 的值到对象中。 |
| 3 |
Character |
包装基本类型 char 的值到对象中。 |
| 4 |
Double |
包装基本类型 double 的值到对象中。 |
| 5 |
Float |
包装基本类型 float 的值到对象中。 |
| 6 |
Integer |
包装基本类型 int 的值到对象中。 |
| 7 |
Long |
包装基本类型 long 的值到对象中。 |
| 8 |
Short |
包装基本类型 short 的值到对象中。 |
这些包装类提供了多种静态方法来操作基本类型的数据,并提供了对基本类型值的封装。