亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較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 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號