为什么只有第一个是true 后面两个都是false

为什么只有第一个 Integer 类是true, 后面两个都是false

img

Float 比较会先看是否为Float 这里10.30默认是Double 所以为false
而Double 100 也是会看是否为Double 因为100默认Integer 所以也是false

可能是int有常量缓存机制,所以是同一个引用
而float double因为重复概率太低,java没有必要缓存常量

总之,如果你要比较数值相等,应该用==和double float,而不是外覆类。

这你就要看 各个包装类的 equals 实现了

  • 首先Integer,内部比较的是 它的基本数据类型 int value,所以两者是相等的

img

  • Float 和 Double 的数据都是有精度问题的,内部转换比较的值是不相等的

img

img