gpt4 book ai didi

java - .equals() 和 == in Java on Integer(== 有效但 .equals 无效!!)

转载 作者:行者123 更新时间:2023-11-29 04:44:56 25 4
gpt4 key购买 nike

代码:

call.getUserId().equals(ITConstants.SPECIALID)

public static final Integer SPECIALID= 0;

POJO:

public class ImCall implements java.io.Serializable {
private Integer userId;

HBM:

<property name="userId">
<column name="USER_ID" />
</property>

MySQL:

int(11) is the datatype in MySQL

当 UserId 为零时,“.equals()”不起作用(返回 false)但令人惊讶的是“==”起作用(返回 true)。我以为是Tomcat Server的问题,所以我清理了它并重新启动。还是一样的问题。

但是又过了几天,我上面提到的问题没有再出现。但是现在,== 和 .equals() 都有效了!

那么,我的第一个问题是,是否存在“==”起作用而“.equals()”不起作用的情况。第二个问题是,为什么“==”在这种情况下返回 true?

编辑:

getter 只返回整数。

public Integer getUserId() {
return userId;
}

public void setUserId(Integer userId) {
this.userId = userId;
}

最佳答案

我相当确定您的测试一定有问题。您描述的症状永远不会发生。

== 不是 equals() 的唯一方法是如果您的 equals 方法实现不当。对于作为核心 Java 类的 Integer,这是不会发生的。

然而,如果返回的数据类型与您预期的 equals() 格式不同(例如 FloatLong),则可能会发生这种情况 可能在那里失败了。

例如 3 == 3L 返回 true 但 new Integer(3).equals(new Long(3)) 返回 false。这是因为允许带有基元的 == 情况将整数提升为长整数以执行比较。

在这里自己试试:http://www.tryjava8.com/app/snippets/52b5878ce4b0f5090255bc17

关于java - .equals() 和 == in Java on Integer(== 有效但 .equals 无效!!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20718592/

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