Double 基本数据类型double 的包装类
Double 类型的对象包含一个 double 类型的字段
属性简介
| 用来以二进制补码形式表示 double 值的比特位数 | public static final int SIZE = 64; |
| 二进制补码形式表示 double 值的字节数 | public static final int BYTES = SIZE / Byte.SIZE; |
| 表示基本类型 double 的 Class 实例 | public static final Class<Double> TYPE = (Class<Double>) Class.getPrimitiveClass("double"); |
| 能够表示的最大值 只有标准化一种形式,也就是前文提到过的 |
public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; |
| 标准化的最小值 |
public static final double MIN_NORMAL = 0x1.0p-1022; |
| 最小值还有非标准化的形式 |
public static final double MIN_VALUE = 0x0.0000000000001P-1022; |
| 正无穷 等同于Double.longBitsToDouble(0x7ff0000000000000L) |
public static final double POSITIVE_INFINITY = 1.0 / 0.0; |
| 负无穷 等同于Double.longBitsToDouble(0xfff0000000000000L). |
public static final double NEGATIVE_INFINITY = -1.0 / 0.0 |
| NaN not a number 等同于Double.longBitsToDouble(0x7ff00L) |
public static final double NaN = 0.0d / 0.0 |
| 指数真值的有效的最大值 | public static final int MAX_EXPONENT = 1023 |
| 指数真值的有效的最小值 | public static final int MIN_EXPONENT = -1022 |
这些属性,看过浮点数简介的话,可以很清晰的理解,再次说明下,但凡本人的系列文章,全部都是有顺序的
构造方法
Double 依然提供了根据基本类型double以及double的String形式构造
String形式依然借助于parseXXX形式 parseDouble
| Double(double value) | ![]() |
| Double(String s) | ![]() |
常用方法
对于浮点数,有一些额外的属性方法
我们浮点数介绍中,对于浮点数的表示形式进行了介绍

Double提供了对于指定值的表示形式的获取方法, 这表示形式也就是是一个64位的二进制位序列
| Double 获取表示形式 对于获取表示形式 提供了两种形式的方法,主要是针对于非数字的NaN的不同表示 他们可以与longBitsToDouble 可以进行互相转换
|
||||
| longBitsToDouble(long) 返回对应于给定位表示形式的 double 值 如果参数是 0x7ff0000000000000L,则结果为正无穷大 如果参数是 0xfff0000000000000L,则结果为负无穷大 如果参数值在 0x7ff0000000000001L 到 0x7fffffffffffffffL 之间或者在 0xfff0000000000001L 到 0xffffffffffffffffL 之间,则结果为 NaN
|
浮点数有几种特殊的表示,比如 无穷 NaN等
额外的,也提供了一些相关的方法
| static boolean isNaN(double v) | 静态方法 是否一个非数字 (NaN) 值 非数值 true ![]() |
| static boolean isFinite(double d) | 静态方法 是否是有限的浮点数 有限的true ![]() |
| static boolean isInfinite(double v) | 静态方法 是否是无穷大 是无穷大 true ![]() |
| boolean isInfinite() | 实例方法 依赖静态方法 ![]() |
| boolean isNaN() | 实例方法 依赖静态方法 ![]() |

比较
| static int compare(double d1, double d2) | 静态方法 比较两个double d1 < d2 小于0 d1 = d2 等于0 d1 > d2 大于0 |
| int compareTo(Double anotherDouble) | 实例方法 两个对象进行大小比较,依赖于静态方法 ![]() |
parseXXX系列
字符串解析 为 基本类型,
不需要对象,所以都是静态方法

| 返回一个字符串形式表示的基本类型double 表现效果同valueOf(String),不过valueOf 返回的是对象 |
| 如果不包含可以解析的字符串将会抛出异常 |
底层依赖sun.misc.FloatingDecimal![]() |
valueOf系列
把基本基本类型 包装为对象
用来创建获得对象,所以无需对象,全都是静态方法

不同于之前介绍的整数 数值,他们都有缓冲
Double v不存在缓存,valueOf也是直接new 对象
| static Double valueOf(double d) | ![]() |
| static Double valueOf(String s) | 依赖parseDouble方法 所以上面说跟valueOf(String)表现效果相同,本身就是一样 ![]() |
Double没有 decode方法
XXXValue系列
| 类似之前介绍的其他数值类型 全部都是强转内部的 value return (XXX)value; |
byteValue() shortValue() intValue() longValue() floatValue() doubleValue() |
toString toXXXString 系列
toString(double)
toString()
toHexString(double)
| static String toString(double d) | 静态方法![]() |
| String toString() | 实例方法 内部调用 static String toString(double d) ![]() |
| static String toHexString(double d) | 静态方法 返回 double参数的十六进制字符串表示形式 API帮助文档中对于字符的转换有明确的规定,可以仔细研究下 示例 ![]() |
toString系列好像没什么好说的,又好像有很多要说的
用到的时候对于格式字符的规定有疑惑直接查看API
equals
| boolean equals(Object obj) | 将此对象与指定对象比较 当且仅当参数不是 null 而是 Double 对象,且表示的 Double 值与此对象表示的 double 值相同时,结果为 true 为此,当且仅当将方法 doubleToLongBits(double) 应用于两个值所返回的 long 值相同时,才认为这两个 double 值相同 注意,在大多数情况下,对于 Double 类的两个实例 d1 和 d2,当且仅当 d1.doubleValue() == d2.doubleValue() 为 true 时,d1.equals(d2) 的值才为 true
但是,有以下两种例外情况:
如果 d1 和 d2 都表示 Double.NaN,那么即使 Double.NaN==Double.NaN 值为 false,equals 方法也将返回 true 如果 d1 表示 +0.0 而 d2 表示 -0.0,或者相反,那么即使 +0.0==-0.0 值为 true,equals 测试也将返回 false 此定义使得哈希表得以正确操作
|
hashCode
| static int hashCode(double value) | 静态方法 获得一个value的hashcode值 ![]() |
| int hashCode() | 实例方法 依赖静态方法 ![]() |
其他方法
| sum(double, double) | ![]() |
| max(double, double) | ![]() |
| min(double, double) | ![]() |
总结
其实浮点数的表示形式与使用规范才是重点
就像Float似的, Double只是double的包装,double也只是IEEE754 标准的一个实现,根本还是在于标准的理解
Double 和 Float 提供的方法结构基本上是一样的,毕竟都是浮点数,标准也都是IEEE754
至此,已经介绍了,基本类型包装类中的数值部分
也就是Byte Short Integer Long Float Double 他们作为数值有很多类似的方法
这些类似的方法属性也可以说是作为数值类型的共性
个人认为,找到共性能够更好理解运用 java提供的类与功能

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/117262.html