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

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

if(sex.equals("女")),這一句是為什么呀,equals是干嘛的呀?

if(sex.equals("女")),這一句是為什么呀,equals是干嘛的呀?

正在回答

2 回答

判斷是否相等,當判斷基本數據類型的時候和==一樣,當判斷引用類型的值的時候,==和Equals都是比較棧內存中的地址是否相等。

 1、string是一個特殊的引用類型。對于兩個字符串的比較,不管是 == 和 Equals 這兩者比較的都是字符串是否相同;
 2、當你創建兩個string對象時,內存中的地址是不相同的,你可以賦相同的值。
  所以字符串的內容相同。引用地址不一定相同,(相同內容的對象地址不一定相同),但反過來卻是肯定的;
 3、基本數據類型比較(string 除外) == 和 Equals 兩者都是比較值;

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

未完記憶 提問者

非常感謝!
2015-11-18 回復 有任何疑惑可以回復我~

看一下 String中重寫Object的equals源碼

  1. public boolean equals(Object anObject) {

  2. ? ? if (this == anObject) {

  3. ? ? ? ? return true;

  4. ? ? }

  5. ? ? if (anObject instanceof String) {

  6. ? ? ? ? String anotherString = (String)anObject;

  7. ? ? ? ? int n = count;

  8. ? ? ? ? if (n == anotherString.count) {

  9. ? ? ? ? char v1[] = value;

  10. ? ? ? ? char v2[] = anotherString.value;

  11. ? ? ? ? int i = offset;

  12. ? ? ? ? int j = anotherString.offset;

  13. ? ? ? ? while (n-- != 0) {

  14. ? ? ? ? ? ? if (v1[i++] != v2[j++])

  15. ? ? ? ? ? ? return false;

  16. ? ? ? ? }

  17. ? ? ? ? return true;

  18. ? ? ? ? }

  19. ? ? }

  20. ? ? return false;

  21. ? ? }

object類的equals()方法,判斷調用該方法的對象與要比較的對象是不是同一個對象(判斷地址),而String類中的equals()方法,則判斷當前字符串與傳遞進來的字符串的內容是否一致。

針對樓上說的第二問,你忽略的常量池技術:


以下兩種創建String對象方式


String a="1";


String b="1";


System.out.println(a==b);結果true,a和b指向常量池中同一個內存空間?


String a1=new String("2");


String b1=new String("2");


System.out.println(a1==b1);結果false,a1和b1分別位于堆中不同的內存空間


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

未完記憶 提問者

初學,,有點看不懂,但是還是謝謝你
2015-11-18 回復 有任何疑惑可以回復我~
#2

passionfoure 回復 未完記憶 提問者

樓上“2”說的有問題,上面的代碼你自己試試
2015-11-18 回復 有任何疑惑可以回復我~
#3

未完記憶 提問者 回復 passionfoure

我現在剛還沒入門,你說的太深奧了,有點看不懂
2015-12-02 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

if(sex.equals("女")),這一句是為什么呀,equals是干嘛的呀?

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

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

幫助反饋 APP下載

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

公眾號

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