gpt4 book ai didi

java - 重写java中的equals方法但出现逻辑错误/意外结果

转载 作者:行者123 更新时间:2023-12-01 06:30:59 25 4
gpt4 key购买 nike

在这个程序中,我试图通过重写 equals 方法来比较两个引用变量值的字段值----这是代码----

public class D {
int i,j;

D(int i,int j)
{
this.i=i;
this.j=j;
}
public boolean equals(Object f)
{
boolean s= (this.i==((D)f).i);
boolean n= (this.j==((D)f).j);
return s==n;
}
}

public class run02 {
public static void main(String[] args){
D d=new D(4,5);
D d1=new D(6,7);
D d2=new D(8,10);
System.out.println(d.equals(d1));//comparing reference variable value
System.out.println(d1.equals(d2));//comparing reference variable value
System.out.println(d);//printing reference variable memory address
System.out.println((d==d1));//comparing reference variable memory address
}
}

Output-true//comparing reference variable value
true//comparing reference variable value
firstProg.e@g3h742//memory address
false//comparing reference variable memory address

当我试图创建一个方法 public boolean equals(int i, intj) 而不给出返回值然后java抛出编译错误。

最佳答案

问题出在这一行:

return s==n;

这里,如果 sn 均为 false,则返回 true

仅当 sn 均为 时,才应使用 s && n 返回 true正确

关于java - 重写java中的equals方法但出现逻辑错误/意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18195359/

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