Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用等于来比较两个参考值_Java - Fatal编程技术网

Java 使用等于来比较两个参考值

Java 使用等于来比较两个参考值,java,Java,我用的是为了比较这两个字段,我发现我必须使用.equals来比较它们 categoryId.longValue() != PDTO.STOREID &&categoryId.longValue()!=mDTO.getCategoryId()){ 我这样编辑我的代码,但它对我没有帮助,(不能在基本类型long上调用equals(long) 有什么帮助吗?equals是一种方法,应该在对象上调用它-在您的例子中,是java.lang.Long的一个实例。只需删除longValue(),就可

我用的是为了比较这两个字段,我发现我必须使用.equals来比较它们

    categoryId.longValue() != PDTO.STOREID
&&categoryId.longValue()!=mDTO.getCategoryId()){

我这样编辑我的代码,但它对我没有帮助,(不能在基本类型long上调用equals(long)


有什么帮助吗?

equals
是一种方法,应该在对象上调用它-在您的例子中,是
java.lang.Long
的一个实例。只需删除
longValue()
,就可以了:

categoryId.equals(PDTO.STOREID) && categoryId.equals(mDTO.getCategoryId())

原语与
==
进行比较。对象与
equals()
进行比较(否则检查两个变量是否指向完全相同的对象)

a.longValue() == b.longValue()
或者你用

a.equals(b);

两者都是等效的(除了第一个将抛出异常id b为null).

什么让你认为你需要使用
.equals
来比较两个long?你在
PDTO.STOREID
之后缺少了一个
。但是你确定你需要equals吗?你所有变量的类型是什么?FindBugs警告我这个错误:这个方法使用==或!=运算符比较两个参考值,其中c比较此类型实例的正确方法通常是使用equals()方法。由于它们是不同的对象,因此可以创建相等但不作为==进行比较的不同实例。通常不应通过引用进行比较的类的示例有java.lang.Integer、java.lang.Float等。在这种情况下,类型是Long的。删除longValue()可以吗这里?是的-您正在比较
java.lang.Long
s,而不是原始
Long
s。谢谢,它真的很有帮助:)
a.equals(b);