gpt4 book ai didi

java-检查对象等于 == 但成功

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

我正在研究一些将客户注册到服务中的示例代码,下面的方法检查客户是否拥有该类型的服务。我假设如果我们想与对象(即服务)进行比较,我们需要使用 equals()方法。

但是下面的代码(在客户类中)工作得很好,但在我更改 == 后它就不起作用了。至equals.()有人可以帮助解释为什么它会这样吗?是因为在某些情况下我们需要使用 == 检查相等性?非常感谢!

boolean hasService(Service sd) { //Service is a class that has int, String and ArrayList as variable
boolean hasService = false;
for (int i=0; i<.length; ++i) { //
//doesn't work if change to ((serviceAvailable[i] ).equals(pd)), why?
if (serviceAvailable[i]==sd) //serviceAvailable is an Array stores different services
hasService = true;
}
return hasService;
}

类Service如下:

 class Serivce {
private String name;
private int price;
private ArrayList <Customers> customersErolled;
//geters and setters methods

boolean equals (Serive a){
if (this.paperName.equals(a.paperName)&&a.semester==this.semester&& a.year==this.year&&a.studentsEnrolled.equals(this.studentsEnrolled) ){
return true;
}else{
return false;
}

最佳答案

相等运算符 == 将比较对象引用,而 equals 将取决于要比较的对象上 equals 的实现。默认情况下,这将比较对象的哈希值(对于代码当时运行的 jvm 中的每个对象来说,该哈希值都是唯一的)。对于正确的 equals,您需要重写 Service 中的 equals 方法,并一一比较那里的实例变量(或者您想要/需要的任何类型的相等)。

关于java-检查对象等于 == 但成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158434/

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