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

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

java中的equals方法問題

java中的equals方法問題

微笑聽雨 2016-09-19 15:34:35
為什么java中的equals方法可以訪問其他對象的私有域
查看完整描述

3 回答

?
JFSL

TA貢獻5條經驗 獲得超0個贊

一般默認情況下都是默認對比兩個對象的地址(String對象除外,String中的equals方法重寫了,改成了對比字符串),自己也可以重寫,但必須遵循規則。

查看完整回答
反對 回復 2016-09-20
?
四無小青年

TA貢獻88條經驗 獲得超43個贊

不知道你所說的equals()訪問私有域是在哪看到的,在java中如果是普通對象,那它的equals()只是單純的使用==來比較的。

?//這是jdk1.7中的源碼
?public?boolean?equals(Object?obj)?{
????????return?(this?==?obj);
????}

而字符串的equals()也沒有你所說的訪問私有域

//這是jdk1.7中的源碼
?public?boolean?equals(Object?anObject)?{
????????if?(this?==?anObject)?{
????????????return?true;
????????}
????????if?(anObject?instanceof?String)?{
????????????String?anotherString?=?(String)?anObject;
????????????int?n?=?value.length;
????????????if?(n?==?anotherString.value.length)?{
????????????????char?v1[]?=?value;
????????????????char?v2[]?=?anotherString.value;
????????????????int?i?=?0;
????????????????while?(n--?!=?0)?{
????????????????????if?(v1[i]?!=?v2[i])
????????????????????????????return?false;
????????????????????i++;
????????????????}
????????????????return?true;
????????????}
????????}
????????return?false;
????}

望采納

查看完整回答
反對 回復 2016-09-19
?
紛飛無悔3342058

TA貢獻4條經驗 獲得超0個贊

equals比較的是字符的hashcode()值,平常我們比較相同的時候一般都是重寫equals方法的。我不清楚你說的私有域是什么意思,大概是private所修飾的吧,想訪問可以通過反射來訪問,反射很強大的!

查看完整回答
反對 回復 2016-09-19
  • 3 回答
  • 0 關注
  • 1593 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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