JDK1.8源码阅读(九)Java.lang.Float

Float

Float是java八大基础类型float的包装类。

定义

public final class Float extends Number implements Comparable<Float> {}

同Double一样继承的Number类,实现了Comparable接口。

 

构造方法

比Double多了一种构造方法。

 

属性


//正无穷大,它等于 Float.intBitsToFloat(0x7f800000) 返回的值
public static final float POSITIVE_INFINITY = 1.0f / 0.0f;

//负无穷,它等于 Float.intBitsToFloat(0xff800000) 返回的值
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;

//NaN not a number 它等于 Float.intBitsToFloat(0x7fc00000) 返回的值
public static final float NaN = 0.0f / 0.0f;

// 能够表示的最大值,3.4028235e+38f
public static final float MAX_VALUE = 0x1.fffffeP+127f; 

//标准化的最小值 1.17549435E-38f
public static final float MIN_NORMAL = 0x1.0p-126f;

//非标准化最小值 1.4e-45f
public static final float MIN_VALUE = 0x0.000002P-126f; 

//指数真值的有效的最大值
public static final int MAX_EXPONENT = 127;

//指数真值的有效的最小值
public static final int MIN_EXPONENT = -126;

//用来以二进制补码形式表示 float 值的比特位数
public static final int SIZE = 32;

//二进制补码形式表示 float 值的字节数
public static final int BYTES = SIZE / Byte.SIZE;

//表示基本类型 float 的 Class 实例
@SuppressWarnings("unchecked")
    public static final Class<Float> TYPE = (Class<Float>) Class.getPrimitiveClass("float");

 

方法

//转String
public static String toString(float f) {
        return FloatingDecimal.toJavaFormatString(f);
    }

//将Float的二进制转成String字符串
public static String toHexString(float f) {
        if (Math.abs(f) < FloatConsts.MIN_NORMAL
            &&  f != 0.0f ) {// float subnormal
            // Adjust exponent to create subnormal double, then
            // replace subnormal double exponent with subnormal float
            // exponent
            String s = Double.toHexString(Math.scalb((double)f,
                                                     /* -1022+126 */
                                                     DoubleConsts.MIN_EXPONENT-
                                                     FloatConsts.MIN_EXPONENT));
            return s.replaceFirst("p-1022$", "p-126");
        }
        else // double string will be the same as float string
            return Double.toHexString(f);
    }

//将String对象返回一个Float对象昂
public static Float valueOf(String s) throws NumberFormatException {
        return new Float(parseFloat(s));
    }

//将基础类型float,新建返回一个Float
public static Float valueOf(float f) {
        return new Float(f);
    }

//调用本地方法将字符转成Float对象
public static float parseFloat(String s) throws NumberFormatException {
        return FloatingDecimal.parseFloat(s);
    }

//判断是否非数值
public static boolean isNaN(float v) {
        return (v != v);
    }

//判读是否无穷大
public static boolean isInfinite(float v) {
        return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
    }

//判断是否负无穷
public static boolean isFinite(float f) {
        return Math.abs(f) <= FloatConsts.MAX_VALUE;
    }

//基础类型强转
public byte byteValue() {
        return (byte)value;
    }
public short shortValue() {
        return (short)value;
    }
public int intValue() {
        return (int)value;
    }.....
//获取哈希码
public int hashCode() {
        return Float.hashCode(value);
    }

//重写equals
public boolean equals(Object obj) {
        return (obj instanceof Float)
               && (floatToIntBits(((Float)obj).value) == floatToIntBits(value));
    }

//求和
public static float sum(float a, float b) {
        return a + b;
    }

//比谁大
    public static float max(float a, float b) {
        return Math.max(a, b);
    }

//比谁小
    public static float min(float a, float b) {
        return Math.min(a, b);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值