1.简介
- 抽象类Number是所有平台类的超类。平台类包含:Byte, Double, Float, Integer, Long, Short (也就是我们通常所说的数值类型包装类), 这些平台类可以与原始类型 byte, double, float, int, long 和 short 相互转换。
- 从数值类型的平台类转换为原始类型的特定语义已经定义在Number对应的实现类中。
对于平台类, 转换类似于将一种收缩或者扩大转换, 这种转换定义在
The Java™ Language Specification
- 因此,转换可能丢失一些原有数值的信息,有可能是精度,也有可能完全不同于原来的输入数值。
- 具体转换细则可以查看Number的实现类
2.源码
/**
* 熟读jdk之Number
*
* @author H1nson
* @version 2018/10/18 21:37:53
*/
public abstract class Number {
public abstract int intValue();
public abstract long longValue();
public abstract float floatValue();
public abstract float doubleValue();
public byte byteValue() {
return (byte)intValue();
}
public short shortValue() {
return (short)intValue();
}
private static final long serialVersionUID = -8742448824652078965L;
}
3.分析
- 这里可以看出来intValue(), longValue(), floatValue(), doubleValue()都是交给实现类去实现的。
- byteValue()和shortValue()是截断intValue()的,有可能会丢失高位二进制数字。
其他
本人也是在慢慢学习中,如有错误还请原谅、敬请指出,谢谢!
网友评论