美文网首页探索JDK
探索JDK之Number类

探索JDK之Number类

作者: 苏小小北 | 来源:发表于2018-10-18 21:53 被阅读0次

    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()的,有可能会丢失高位二进制数字。

    其他


    本人也是在慢慢学习中,如有错误还请原谅、敬请指出,谢谢!

    相关文章

      网友评论

        本文标题:探索JDK之Number类

        本文链接:https://www.haomeiwen.com/subject/zrwszftx.html