Float 基本数据类型float  的包装类
Float 类型的对象包含一个 float 类型的字段
  

属性简介

用来以二进制补码形式表示 float 值的比特位数 public static final int SIZE = 32;
二进制补码形式表示 float 值的字节数 public static final int BYTES = SIZE / Byte.SIZE;
表示基本类型 float 的 Class 实例 public static final Class<Float> TYPE = (Class<Float>) Class.getPrimitiveClass("float");
能够表示的最大值
只有标准化一种形式,也就是前文提到过的
public
static final float MAX_VALUE = 0x1.fffffeP+127f;
标准化的最小值
public
static final float MIN_NORMAL = 0x1.0p-126f;
最小值还有非标准化的形式
public
static final float MIN_VALUE = 0x0.000002P-126f;
正无穷
它等于
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;
指数真值的有效的最大值 public static final int
MAX_EXPONENT = 127;
指数真值的有效的最小值 public static final int
MIN_EXPONENT = -126;
 
这些属性,看过上一篇浮点数简介的话,可以很清晰的理解     

构造方法

Float 依然提供了根据基本类型float以及float的String形式构造
String形式依然借助于parseXXX形式 parseFloat
另外,也提供了根据基本类型double进行构造的方式,内部直接强转
Float(float
value)
Float(String
s)
Float(double
value)
直接强转
 

常用方法

对于浮点数,有一些额外的属性方法
我们浮点数介绍中,对于浮点数的表示形式进行了介绍
Float提供了对于指定值的表示形式的获取方法, 这表示形式也就是是一个32位的二进制位序列
 
Float
获取表示形式
对于获取表示形式 提供了两种形式的方法,主要是针对于非数字的NaN的不同表示
他们可以与intBitsToFloat
可以进行互相转换

floatToRawIntBits
如果参数为正无穷大,则结果为 0x7f800000
如果参数为负无穷大,则结果为 0xff800000
如果参数为 NaN,则结果是表示实际 NaN 值的整数
与 floatToIntBits 方法不同,floatToRawIntBits 不压缩所有将 NaN 编码为一个“规范”NaN 值的位模式。
 
在所有情况下,结果都是一个整数,将其赋予 intBitsToFloat(int) 方法将生成一个与 floatToRawIntBits
的参数相同的浮点值
 
本地方法
floatToIntBits
如果参数为正无穷大,则结果为 0x7f800000
如果参数为负无穷大,则结果为 0xff800000
如果参数为 NaN,则结果为 0x7fc00000
 
在所有情况下,结果都是一个整数
将其赋予 intBitsToFloat(int) 方法将生成一个浮点值,该浮点值与 floatToIntBits 的参数相同
(而所有 NaN 值则会生成一个“规范”NaN 值)
 
依赖floatToRawIntBits
将表示形式转换为Float,返回对应于给定位表示形式的
float 值
本地方法
其实就是按照布局计算float

如果参数为 0x7f800000,则结果为正无穷大
如果参数为 0xff800000,则结果为负无穷大
如果参数值在 0x7f800001 到 0x7fffffff 或在 0xff800001 到 0xffffffff 之间,则结果为 NaN
 
Java 提供的任何 IEEE 754 浮点操作都不能区分具有不同位模式的两个同类型 NaN 值
不同的 NaN 值只能使用 Float.floatToRawIntBits 方法区分
 
浮点数有几种特殊的表示,比如 无穷 NaN等
额外的,也提供了一些相关的方法
 
static
boolean isNaN(float v)
静态方法
是否一个非数字
(NaN) 值
非数值 true
static
boolean isFinite(float f)
静态方法
是否是有限的浮点数
有限的true
static
boolean isInfinite(float v)
静态方法
是否是无穷大
是无穷大  true
boolean
isInfinite()
实例方法
依赖静态方法
boolean
isNaN()
实例方法
依赖静态方法

 

比较

static int
compare(float f1, float f2)
静态方法
比较两个float
f1
< f2 小于0
f1 = f2 等于0
f1 > f2 大于0
int
compareTo(Float anotherFloat)
实例方法
两个对象进行大小比较,依赖于静态方法
 

parseXXX系列

字符串解析 为 基本类型,
不需要对象,所以都是静态方法
返回一个字符串形式表示的基本类型float
表现效果同valueOf(String),不过valueOf
返回的是对象
如果String是null或者不包含可以解析的字符串将会抛出异常
底层依赖sun.misc.FloatingDecimal

 
 

valueOf系列

把基本基本类型 包装为对象
用来创建获得对象,所以无需对象,全都是静态方法
 
不同于之前介绍的整数 数值,他们都有缓冲
float不存在缓存,valueOf也是直接new 对象
static
Float valueOf(float f)
static
Float valueOf(String s)
依赖parseFloat方法
所以上面说跟valueOf(String)表现效果相同,本身就是一样
 
 

Float没有 decode方法

XXXValue系列

类似之前介绍的其他数值类型
全部都是强转内部的  value
return (XXX)value;
byteValue()
shortValue()
intValue()
longValue()
floatValue()
doubleValue()

toString  toXXXString  系列

static
String toString(float f)
静态方法
String
toString()
实例方法
内部调用  static String toString(float f)
static
String toHexString(float f)
静态方法
返回
float 参数的十六进制字符串表示形式
toString系列好像没什么好说的,又好像有很多要说的
用到的时候对于格式字符的规定有疑惑直接查看API    

equals

boolean
equals(Object obj) 
将此对象与指定对象进行比较
当且仅当参数不是 null 而是 Float 对象,且表示的 float 值与此对象表示的 float 值相同时,结果为 true
为此,当且仅当将方法 #floatToLongBits(double) 应用于两个值所返回的 int 值相同时,才认为这两个 float 值相同
 
注意,在大多数情况下,对于 Float 类的两个实例 f1 和 f2,当且仅当
f1.floatValue() == f2.floatValue()
的值为 true 时,f1.equals(f2) 的值才为 true。但是,有以下两种例外情况:
如果 f1 和 f2 都表示 Float.NaN,那么即使 Float.NaN==Float.NaN 的值为 false,equals 方法也将返回
true
所以此处使用的是floatToIntBits,而不是raw的
 
如果 f1 表示 +0.0f,而 f2 表示 -0.0f,或相反,那么即使 0.0f==-0.0f 的值为 true,equal 测试也将返回
false
该定义使得哈希表得以正确操作。

hashCode

static int
hashCode(float value)
静态方法
获得一个value的hashcode值
int
hashCode()
实例方法
依赖静态方法

其他方法

sum(float,
float)
max(float,
float)
min(float,
float)
 

总结

其实浮点数的表示形式与使用规范才是重点
Float只是float的包装,float也只是IEEE754
标准的一个实现,根本还是在于标准的理解
 
 
 

[七]基础数据类型之Float详解的更多相关文章

  1. [五]基础数据类型之Short详解

      Short 基本数据类型short  的包装类 Short 类型的对象包含一个 short 类型的字段      原文地址:[五]基础数据类型之Short详解   属性简介   值为  215-1 ...

  2. [二]基础数据类型之Long详解

      Long   Long 基本数据类型long  的包装类 Long 类型的对象包含一个 long类型的字段     属性简介   值为  263-1 的常量,它表示 long 类型能够表示的最大值 ...

  3. [三]基础数据类型之Integer详解

        Integer 基本数据类型int  的包装类 Integer 类型的对象包含一个 int 类型的字段     属性简介 值为 2^31-1 的常量,它表示 int 类型能够表示的最大值 @N ...

  4. [八]基础数据类型之Double详解

    Double 基本数据类型double  的包装类 Double 类型的对象包含一个 double 类型的字段   属性简介 用来以二进制补码形式表示 double 值的比特位数 public sta ...

  5. [九]基础数据类型之Boolean详解

      相对于其他的基础性 类型Boolean是很简单的 Boolean 基本数据类型boolean  的包装类 Boolean 类型的对象包含一个 boolean 类型的字段    属性简介 属性也比较 ...

  6. Python数据类型及其方法详解

    Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...

  7. VC++常用数据类型及其操作详解

    原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...

  8. mysql基础篇 - SELECT 语句详解

    基础篇 - SELECT 语句详解         SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...

  9. Java基础-面向接口编程-JDBC详解

    Java基础-面向接口编程-JDBC详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JDBC概念和数据库驱动程序 JDBC(Java Data Base Connectiv ...

随机推荐

  1. JS 存储

    1. 描述cookie ,sessionStorage 和 localStorage 的区别? cookie : 本身用于客户端和服务器端通信, 但是有本身存储的功能,就被‘借用’ 使用documen ...

  2. hive求TopN语句

    ROW_NUMBER,RANK(),DENSE_RANK() 先了解这三个之间的区别: Rank():1,2,2,4,5(一般用这个较多,不会影响总排名) Dense_rank():1,2,2,3,4 ...

  3. MariaDB dos 下连接

    本地 DOS 连接 将文件目录切换到 bin 文件夹下 cd C:\xampp\mysql\bin 输入连接命令 输入 status,查看数据库版本 远程DOS 连接

  4. 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink

    转自:https://www.cnblogs.com/reed/p/7730329.html 今天看到一篇讲得比较清晰的框架对比,这几个框架的选择对于初学分布式运算的人来说确实有点迷茫,相信看完这篇文 ...

  5. HelloPython

    HELLOWORD!你好!Python! 学习Python已有一段时间,一个人自学颇不容易,在此分享一些自己学习经验和感受,温故而知新,也希望自己能有些新收获. 学习Python,大多数人创建的第一个 ...

  6. Data Center手册(3): Load Balancer

    Load Balancer的类型 DNS Round-Robin 这是一种很常见的分流的方式,具体配置如下: name server有一个zone文件,对于同一个domain,有多个IP www.ex ...

  7. Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)

    ASP.NET Core知多少系列:总体介绍及目录 Demo路径:GitHub-RPL.Demo 1. Introduction Razor Page Library 是ASP.NET Core 2. ...

  8. IntelliJ Idea 2017 免费激活方法

    1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...

  9. Android单元测试之四:仪器化测试

    Android单元测试之四:仪器化测试 仪器化测试 在某些情况下,虽然可以通过模拟的手段来隔离 Android 依赖,但代价很大,这种情况下可以考虑仪器化的单元测试,有助于减少编写和维护模拟代码所需的 ...

  10. 非对称加密技术里面,最近出现了一种奇葩的密钥生成技术,iFace人脸密钥技术

    要说到非对称加密技术啊,得先说说对称加密技术 什么是对称加密技术 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密. 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称 ...