第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

測(cè)試等于方法

測(cè)試等于方法

慕妹3146593 2021-10-28 16:35:59
我有一個(gè)奇怪的問(wèn)題,我無(wú)法理解為什么會(huì)發(fā)生這種情況。我equals在一個(gè)DoublyLinkedList泛型類中實(shí)現(xiàn)了這個(gè)方法:@Override    public boolean equals(Object obj) {        if (this == obj) {            return true;        }        if (getClass() != obj.getClass() || obj == null) {            return false;        }        DoublyLinkedList<E> other = (DoublyLinkedList<E>) obj;        if (this.size != other.size) {            return false;        }        Iterator<E> iterator = this.iterator();        Iterator<E> otherIterator = other.iterator();        while(iterator.hasNext()){                   if(iterator.next() != otherIterator.next()){                return false;            }        }        return true;    }在單元測(cè)試中測(cè)試此方法,如下所示:@Testpublic void testEquals() {    System.out.println("equals");    DoublyLinkedList <String> instance1 = new DoublyLinkedList <>(), instance2 = new DoublyLinkedList <>();    instance1.addLast("Xpto");    instance1.addLast("Ypto");    instance1.addLast("Zpto");    instance2.addLast("Xpto");    assertFalse("Lists should not be equal", (instance1.equals(instance2)));    assertFalse("Lists should not be equal", (instance2.equals(instance1)));            instance2.addLast("Ypto");    assertFalse("Lists should not be equal", (instance1.equals(instance2)));    assertFalse("Lists should not be equal", (instance2.equals(instance1)));    instance2.addLast("Zpto");    assertTrue("Lists should be equal", (instance1.equals(instance2)));    assertTrue("Lists should be equal", (instance2.equals(instance1)));       }告訴我測(cè)試通過(guò)了。但是,如果我在第一個(gè)代碼中使用!=, 而不是equals比較每個(gè)迭代器的實(shí)例,為什么會(huì)發(fā)生這種情況?它不應(yīng)該比較引用,從而失敗嗎?
查看完整描述

2 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

Java 正在代表您駐留(或緩存)某些引用。具體來(lái)說(shuō),如果您輸入Strings 作為您的類型,您將遇到一些奇怪的字符串實(shí)習(xí)行為,突然之間,您的列表具有相同的String. 這是完全可以處理引用的唯一方法==- 如果它以某種方式被嵌入或緩存并且可以被引用。

這是微不足道的失?。蝗绻褂玫闹挡荒鼙粚?shí)習(xí)或緩存,那么您將觀察到您的測(cè)試失敗。

例如,new BigInteger("100")new BigInteger("100")在內(nèi)存中的位置不同,如果將它們都放在列表中并嘗試比較等價(jià)性,則會(huì)得到false.


查看完整回答
反對(duì) 回復(fù) 2021-10-28
  • 2 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)