gpt4 book ai didi

java - 为什么将两个相等的 Float 值与 == 进行比较会返回 false

转载 作者:行者123 更新时间:2023-11-30 08:25:28 27 4
gpt4 key购买 nike

如果我有

    Float f1 = 5.25f;
Float f2 = 5.25f;

然后

    f1 == f2 

是错误的。虽然

    f1.equals(f2);

是真的。为什么会这样,我以为如果执行拆箱,那么f1 == f2应该比较

f1.floatValue() == f2.floatValue();

一样
f1.equals(f2); 

应该做的。怎么了?

更新: 不,我看到了答案,因为 Java 也会比较 Float 对象的引用。我问这个问题是因为我有

    Long l = 15l;
Long l2 = 15l;

但是

    System.out.println(l == l2);

输出是

    true

所以我被误导了,以为数值型对象在使用==时是按值比较的。但我发现,比较小的 long 值将返回 true,因为 small long values are cached!

最佳答案

f1f2 是对象。

== 比较引用。

没有理由拆箱,因为没有参数需要进行原始比较

如果比较 f1 == 3.0ff1 == f2.floatValue(),将进行拆箱,因为操作数是原始值。

关于java - 为什么将两个相等的 Float 值与 == 进行比较会返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com