JDK源码解析之 Java.lang.Float

Float类是原始类型float的包装类,它包含若干有效处理浮点值的方法,如将其转换为字符串表示形式,反之亦然。Float类的一个对象可以包含一个浮点值

一、类定义

public final class Float extends Number implements Comparable<Float> {}
  • 类被声明为final的,表示不能被继承;
  • 继承了Number抽象类,可以用于数字类型的一系列转换;
  • 实现了Comparable接口,强行对实现它的每个类的对象进行整体排序

二、成员变量

//一个保持正无穷大的 float 类型常数
public static final float POSITIVE_INFINITY = 1.0f / 0.0f;//一个保持负无穷大的 float 类型常数  
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;//值为NaN(Not a Number,非数)的一个 float 类型常数  
public static final float NaN = 0.0f / 0.0f;//一个 float 类型常量存储 float 的有限最大值public static final float MAX_VALUE = 0x1.fffffeP+127f; // 3.4028235e+38f//一个 float 类型常量存储 float 的有限最小正数值public static final float MIN_NORMAL = 0x1.0p-126f; // 1.17549435E-38f//保持最小单精度类型的最小非零的常数
public static final float MIN_VALUE = 0x0.000002P-126f; // 1.4e-45f// float 变量可以拥有的最大指数值。
public static final int MAX_EXPONENT = 127;
// float 变量可以拥有的最小指数值。
public static final int MIN_EXPONENT = -126;//一个double类型变量为32位,即4个字节。
public static final int SIZE = 32;
//用于表示单精度值(float值)的字节数
public static final int BYTES = SIZE / Byte.SIZE;//该类的实例表示基本类型float
@SuppressWarnings("unchecked")
public static final Class<Float> TYPE = (Class<Float>) Class.getPrimitiveClass("float");

三、构造器

    public Float(float value) {this.value = value;}public Float(double value) {this.value = (float)value;}public Float(String s) throws NumberFormatException {value = parseFloat(s);}

Float 依然提供了根据基本类型float以及float的String形式构造,String形式依然借助于parseXXX形式 parseFloat

另外,也提供了根据基本类型double进行构造的方式,内部直接强转

四、常用方法

Float多数方法与Double方法类似

1、isNaN(float v)

静态方法,是否一个非数字 (NaN) 值,非数值 true

    public static boolean isNaN(float v) {return (v != v);}

实例方法:boolean isNaN()

2、isFinite(float f)

静态方法,是否是有限的浮点数,有限的true

     public static boolean isFinite(float f) {return Math.abs(f) <= FloatConsts.MAX_VALUE;}
3、isInfinite(float v)

静态方法,是否是无穷大,是无穷大 true

    public static boolean isInfinite(float v) {return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);}

实例方法:boolean isInfinite()

4、compare(float f1, float f2)

静态方法,比较两个float

    public static int compare(float f1, float f2) {if (f1 < f2)return -1;           // Neither val is NaN, thisVal is smallerif (f1 > f2)return 1;            // Neither val is NaN, thisVal is larger// Cannot use floatToRawIntBits because of possibility of NaNs.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)}

f1 < f2 小于0,f1 = f2 等于0,f1 > f2 大于0

实例方法:int compareTo(Float anotherFloat)两个对象进行大小比较,依赖于静态方法

5、parseXXX系列

字符串解析 为 基本类型,

不需要对象,所以都是静态方法

    public static float parseFloat(String s) throws NumberFormatException {return FloatingDecimal.parseFloat(s);}
6、valueOf系列

把基本基本类型 包装为对象

用来创建获得对象,所以无需对象,全都是静态方法

    public static Float valueOf(String s) throws NumberFormatException {return new Float(parseFloat(s));}
7、XXXValue系列

byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue()

都是强转内部的 value

8、toString
public String toString() {return Float.toString(value);}
public static String toString(float f) {return FloatingDecimal.toJavaFormatString(f);}public String toString() {return Float.toString(value);}
9、equals(Object obj)

用于比较两个Float对象的相等性。如果两个对象都包含相同的float值,则此方法返回true。只有在检查平等的情况下才能使用。在其他所有情况下,compareTo方法应该是首选。

public boolean equals(Object obj) {return (obj instanceof Float)&& (floatToIntBits(((Float)obj).value) == floatToIntBits(value));
}
9、compareTo和compare
public int compareTo(Float anotherFloat) {return Float.compare(value, anotherFloat.value);}public static int compare(float f1, float f2) {if (f1 < f2)return -1;           // Neither val is NaN, thisVal is smallerif (f1 > f2)return 1;            // Neither val is NaN, thisVal is larger// Cannot use floatToRawIntBits because of possibility of NaNs.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)}

compareTo用于比较两个Double对象的数值相等性。这应该用于比较两个Double值的数值相等性,因为它会区分较小值和较大值。返回小于0,0的值,大于0的值小于,等于和大于。

compare用于比较两个原始double值的数值相等。因为它是一个静态方法,因此可以在不创建任何Double对象的情况下使用它。

五、拓展

1、Java中double和float的区别

float是单精度类型,精度是8位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字节的存储空间

double是双精度类型,精度是17位有效数字,取值范围是10的-308次方到10的308次方,double占用8个字节的存储空间

当你不声明的时候,默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f

在程序中处理速度不同,一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)

在主动模式下&#xff0c;FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接&#xff0c;然后开放N1号端口进行监听&#xff0c;并向服务器发出PORT N 1命令。服务器接收到命令后&#xff0c;会用其本地的FTP数据端口&#xff08;通常是20&#xff09;来连接客户…

JDK源码解析之 java.lang.Integer

teger 基本数据类型int 的包装类 Integer 类型的对象包含一个 int 类型的字段 一、类定义 public final class Integer extends Number implements Comparable<Integer>{}类被声明为final的,表示不能被继承;继承了Number抽象类,可以用于数字类型的一系列转换;实现了Comp…

Loadrunner的基本概念

1)vuser_init(only one &#xff0c;重复执行脚本的时候&#xff0c;此部分只会执行一次 ) %G< rJc*P 2)action( 一个或者多个 , 重复执行脚本的时候&#xff0c;只有该部分会按重复的次数重复执行 ) z*Xfjy(Mj 3)vuser_end(only one, 重复执行脚本的时候&#xff0c;此…

JDK源码解析之 java.lang.Long

Long 与Integer 是数值类型中使用频率最高的两个,也是提供支持方法最多的两个 他们提供出来的方法功能也是高度的相似 一、类定义 public final class Long extends Number implements Comparable<Long> {}类被声明为final的,表示不能被继承;继承了Number抽象类,可以用于…

sed教程入门与实例练习(一)

UNIX 世界中有很多文本编辑器可供我们选择。思考一下 — vi、emacs 和 jed 以及很多其它工具都会浮现在脑海中。我们都有自己已逐渐了解并且喜爱的编辑器&#xff08;以及我们喜爱的组合键&#xff09;。有了可信赖的编辑器&#xff0c;我们可以轻松处理任何数量与 UNIX 有关的…

JDK源码解析之 Java.lang.Short

Short类是基本类型short 的包装类&#xff0c;它包含几种有效处理短值的方法&#xff0c;如将其转换为字符串表示形式&#xff0c;反之亦然。Short类的对象可以包含单个短值。 一、类定义 public final class Short extends Number implements Comparable<Short> {}类被…

sed教程入门与实例练习(二)

让我们看一下 sed 最有用的命令之一&#xff0c;替换命令。使用该命令&#xff0c;可以将特定字符串或匹配的规则表达式用另一个字符串替换。下面是该命令最基本用法的示例&#xff1a; $ sed -e ’s/foo/bar/’ myfile.txt上面的命令将 myfile.txt 中每行第一次出现的 ‘foo’…

Oracle GoldenGate简介

一、什么是Oracle GoldenGate&#xff1f; Oracle GoldenGate是用于实时数据集成和复制的综合软件包。它支持高可用性解决方案&#xff0c;实时数据集成&#xff0c;事务性更改数据捕获&#xff0c;数据复制&#xff0c;转换以及运营和分析企业系统之间的验证。 使用Oracle G…

sed教程入门与实例练习(三)

在第二篇 sed 文章中&#xff0c;我提供了一些示例来演示 sed 的工作原理&#xff0c;但是它们当中很少有示例能实际做特别有用的事。在这篇 sed 系列的最后文章中&#xff0c;我要改变那种方式&#xff0c;并使用 sed 来做实际的事。我将为您显示几个示例&#xff0c;它们不仅…

Oracle GoldenGate微服务架构

Oracle GoldenGate支持两种架构&#xff0c;经典架构和微服务架构&#xff08;MA&#xff09;。 可以出于以下目的配置Oracle GoldenGate&#xff1a; 从一个数据库中静态提取数据记录&#xff0c;并将这些记录加载到另一个数据库中。连续提取和复制事务性数据处理语言&#…

Oracle GoldenGate经典架构

可以使用Oracle GoldenGate Classic Architecture从命令行配置和管理数据复制。 图示的说明logicalarch2.png 注意&#xff1a; 这是基本配置。根据业务需求和用例&#xff0c;可以配置此模型的不同变体。 1、Manager Manager是Oracle GoldenGate的控制过程。必须先在Oracl…

WordPress 首页显示摘要

这里的方法不需要你另外装插件。 1、使用more标签 (缺点&#xff1a;每次都要加一下这个东西&#xff0c;不灵活只能一刀切。优点&#xff1a;方法比较正规不需要改动模版) 在你需要截断的地方(就是你的编辑框)加 <!–more–> 代码. 2、使用the_excerpt标签 (缺点&#x…

Oracle GoldenGate复制过程

这两种Oracle GoldenGate体系结构共有许多数据复制过程。 1、什么是Extract&#xff1f; Extract是一个过程&#xff0c;该过程被配置为针对源数据库运行或被配置为在下游挖掘数据库&#xff08;仅Oracle&#xff09;上运行&#xff0c;以捕获在其他位置的真实源数据库中生成…

awk教程入门与实例练习(一)

Awk 是一种非常好的语言&#xff0c;同时有一个非常奇怪的名称。在本系列&#xff08;共三篇文章&#xff09;的第一篇文章中&#xff0c;Daniel Robbins 将使您迅速掌握 awk 编程技巧。随着本系列的进展&#xff0c;将讨论更高级的主题&#xff0c;最后将演示一个真正的高级 a…

HDFS-简介

HDFS 是 Hadoop Distribute File System 的简称&#xff0c;意为&#xff1a;Hadoop 分布式文件系统&#xff0c;是一种旨在在商品硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。但是&#xff0c;与其他分布式文件系统的区别很明显。HDFS具有高度的容错…

awk教程入门与实例练习(二)

在这篇 awk 简介的续集中&#xff0c;Daniel Robbins 继续探索 awk&#xff08;一种很棒但有怪异名称的语言&#xff09;。Daniel 将演示如何处理多行记录、使用循环结构&#xff0c;以及创建并使用 awk 数组。阅读完本文后&#xff0c;您将精通许多 awk 的功能&#xff0c;而且…

HDFS-配置项

一、core-site.xml与core-default.xml core-default.xml与core-site.xml的功能是一样的&#xff0c;如果在core-site.xml里没有配置的属性&#xff0c;则会自动会获取core-default.xml里的相同属性的值 <configuration><property><!-- 这个属性用来指定namenod…

awk教程入门与实例练习(三)

在 awk 系列的这篇总结中&#xff0c;Daniel 向您介绍 awk 重要的字符串函数&#xff0c;以及演示了如何从头开始编写完整的支票簿结算程序。在这个过程中&#xff0c;您将学习如何编写自己的函数&#xff0c;并使用 awk 的多维数组。学完本文之后&#xff0c;您将掌握更多 awk…

HDFS-常用命令

1. -help&#xff1a;显示帮助信息 hadoop fs -help rmshel2. -ls&#xff1a;显示目录信息 hadoop fs -ls /3. -mkdir&#xff1a;在HDFS上创建目录 hadoop fs -mkdir -p /user/ha4. -moveFromLocal&#xff1a;从本地剪切粘贴到HDFS hadoop fs -moveFromLocal ~/test.txt…

如何关闭WINDOWS2003 DEP数据保护功能

近来很多朋友和客户都使用了WINDOWS2003来架设自己的GAME SERVER,但有很多朋友反映说,不如WINDOWS2000好,原因不是稳定,而是成功率高,和简单.但我个人觉得WINDOWS2003还是不错的系统,如果朋友们都不用这个系统,而用WINDOWS2000 有点不值得了.我就开始找寻这样的问题.我对GAME 不…