通常,当我们处理数值时,我们会使用诸如 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 的值到对象中。 |
这些包装类提供了多种静态方法来操作基本类型的数据,并提供了对基本类型值的封装。