为了账号安全,请及时绑定邮箱和手机立即绑定

比较Java中的对象

比较Java中的对象

泛舟湖上清波郎朗 2023-05-10 13:42:14
这是我的申请public class testwithmain {public static void main(String[]args){    Money m12CHF = new Money(12,"CHF");     System.out.println(m12CHF.amount());    Money m14CHF = new Money(14,"CHF");    System.out.println(m14CHF.amount());    Money expected = new Money(26,"CHF");    System.out.println("expected "+expected.amount()+expected.currency());    Money result = m12CHF.add(m14CHF);     System.out.println("result "+result.amount()+result.currency());    System.out.println(expected.equals(result));}}//-------------------------public class Money {     private int fAmount;     private String fCurrency;     public Money(int amount, String currency) {        fAmount = amount;         fCurrency = currency;    }     public int amount() {return fAmount;}     public String currency() {return fCurrency;}     public Money add(Money m) {        return new Money(amount() + m.amount(), currency());    } }结果是:1214expected 26CHFresult 26CHFfalse拜托,为什么我有 false ?太感谢了。
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您的Money类缺少方法的实现equals,这是为了让 Java 知道表示结果的对象m12CHF.add(m14CHF)和new Money(26,"CHF")表示同一事物的对象所必需的,即使这两者是不同的 Java 对象。


里面的代码equals应该遵循这个通用模板:


@Override

public boolean equals(Object o) { 

    if (o == this) { 

        return true; 

    } 

    if (!(o instanceof Money)) { 

        return false; 

    }

    Money other = (Money) o; 

    ... // Your code goes here

}


@Override

public int hashCode() {

    return Objects.hash(fAmount, fCurrency);

}

您的实现需要将对象的fAmountand与和fCurrency中的值进行比较。用于比较对象;数字可以与运算符进行比较。other.fAmountother.fCurrencyequalsString==


查看完整回答
反对 回复 2023-05-10
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

您需要重写 equals 方法(它是从对象类继承的)


@Override

public boolean equals(Object obj){

   if(obj instanceof Money){

     Money other = (Money)obj;

     //now you define when two intance object of Money are equal...

   }

   //...

}

为什么这是必要的? 因为您正在使用的当前 equals 是来自 Object 类的 equals。对象的equals方法定义两个对象有相同的引用时是相同的


查看完整回答
反对 回复 2023-05-10
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信