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

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于equals()方法有疑問?

老師說equals()方法是比較對象的引用是都指向同一塊內存地址。

第一個代碼:s1和s2 不同,分別指向不同的對象內存地址

public?class?Test?A{
public?static?void?main(String?args[])?{
????String?s1?=?new?String("Hello");
????String?s2?=?new?String("Hello");
???System.out.println("?s1==?s2?is?"?+?(s1?==?s2));
???System.out.println("?s1.equals(s2)?is?"?+?s1.equals(s2));
}
}

結果:

s1==?s2?is?false
s1.equals(s2)?is?true

第二個代碼:由于字符串常量池的原因,s1和s2相同

public?class?Test?A{
public?static?void?main(String?args[])?{
????String?s1?=“Hello”;
????String?s2?=?“Hello";
???System.out.println("?s1==?s2?is?"?+?(s1?==?s2));
???System.out.println("?s1.equals(s2)?is?"?+?s1.equals(s2));
}
}

結果:

?s1==?s2?is?true
?s1.equals(s2)?is?true

根據以上兩個代碼,比較值是否相等是equals(),比較兩個引用是否指向同一內存地址是”==“。不過老師下面的代碼:

http://img1.sycdn.imooc.com//55293ffb0001598c04000295.jpg

卻顯示equals()比較的就是兩個引用指向的內存地址是否相同。疑惑,難道是String和普通類創建對象有什么不同?

正在回答

1 回答

問題解決了!

  • JDK類中有一些類覆蓋了oject類的equals()方法(Object?中equals()方法是比較內存地址的),比較規則為:如果兩個對象的類型一致,并且內容一致,則返回true,這些類有:java.io.file,java.util.Date,java.lang.string,包裝類(Integer,Double等)。

  • 如果在Animal類覆蓋equals函數,就會得到不同的效果。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

關于equals()方法有疑問?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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