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

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

java中String類中的這個boolean equals(Object obj),為什么括號里寫Object,而不是String。

java中String類中的這個boolean equals(Object obj),為什么括號里寫Object,而不是String。

qq_慕婉清9181605 2019-06-13 18:38:40
是因為重寫了父類的方法嗎
查看完整描述

3 回答

?
逆光之羽

TA貢獻55條經驗 獲得超13個贊

看了下源碼 傳入參數為anObject,里面一個判斷是 this == anObject 應該是只有內存地址相關才會為true

另個一個anObject instanceof String,直接指定了判斷類型是否為String

以上似乎只有傳入參數類型為String才會進行判斷 其他情況都是直接return false

所以個人理解入參寫成Object類型只是寫通用化模塊的編碼習慣的問題

public boolean equals(Object anObject) {
?? ?if (this == anObject) {????//如果內存地址相同
?? ???? return true;
?? ?}
?? ?if (anObject instanceof String) {????????//如果是String類型實例
?? ???? String anotherString = (String)anObject;
?? ???? int n = count;
?? ???? if (n == anotherString.count) {
?? ??? ?char v1[] = value;
?? ??? ?char v2[] = anotherString.value;
?? ??? ?int i = offset;
?? ??? ?int j = anotherString.offset;
?? ??? ?while (n-- != 0) {
?? ??? ???? if (v1[i++] != v2[j++])
?? ??? ??? ?return false;
?? ??? ?}
?? ??? ?return true;
?? ???? }
?? ?}
?? ?return false;
?}

查看完整回答
反對 回復 2019-06-18
  • 3 回答
  • 0 關注
  • 1047 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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