源码分析

Posted hyhy904

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码分析相关的知识,希望对你有一定的参考价值。

// 定义变量用来接收float值
private final float value;

// 构造函数,传入一个value
public Float(float value)
this.value = value;

// 构造函数,传入一个double值
public Float(double value)
this.value = (float)value;

// 构造函数,传入一个字符串
public Float(String s) throws NumberFormatException
value = parseFloat(s);


// 判断是否是nan,这里永远为false
public boolean isNaN()
return isNaN(value);


// 是否是无限的
public boolean isInfinite()
return isInfinite(value);

// 将float数据转换成其它类型的数据
public String toString()
return Float.toString(value);

public byte byteValue()
return (byte)value;

public short shortValue()
return (short)value;

public int intValue()
return (int)value;

public long longValue()
return (long)value;

public float floatValue()
return value;

public double doubleValue()
return (double)value;


// 获取hashCode值
@Override
public int hashCode()
return Float.hashCode(value);


// 计算hashCode值
public static int hashCode(float value)
return floatToIntBits(value);


// 比较两个float数据的大小
public boolean equals(Object obj)
return (obj instanceof Float)
&& (floatToIntBits(((Float)obj).value) == floatToIntBits(value));


// 将falot转换成int的byte值
public static int floatToIntBits(float value)
int result = floatToRawIntBits(value);
// 根据位字段,最大指数和非零有效数的值检查NaN。
if ( ((result & FloatConsts.EXP_BIT_MASK) ==
FloatConsts.EXP_BIT_MASK) &&
(result & FloatConsts.SIGNIF_BIT_MASK) != 0)
result = 0x7fc00000;
return result;


// ?????????????????
public static native int floatToRawIntBits(float value);
public static native float intBitsToFloat(int bits);

// 比较两个float数据
public int compareTo(Float anotherFloat)
return Float.compare(value, anotherFloat.value);


// 比较两个float数据
public static int compare(float f1, float f2)
if (f1 < f2)
return -1;// val都不是NaN,this.value更小
if (f1 > f2)
return 1;// val都不是NaN,this.value更大
// 由于NaNs的可能性,不能使用floatToRawIntBits。
int thisBits = Float.floatToIntBits(f1);
int anotherBits = Float.floatToIntBits(f2);
return (thisBits == anotherBits ? 0 : // Values are equal
(thisBits < anotherBits ? -1 : // (-0.0, 0.0) or (!NaN, NaN)
1)); // (0.0, -0.0) or (NaN, !NaN)

// 求和
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);

private static final long serialVersionUID = -2671257302660747028L;

--------------------- 

以上是关于源码分析的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis源码分析

Spring源码分析专题——目录

ARouter源码分析

Handler源码分析

Eureka源码分析(六) TimedSupervisorTask

[Netty源码分析]ByteBuf(一)