如何進行equals()方法和==異同的比較-創(chuàng)新互聯(lián)

如何進行equals()方法和==異同的比較,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于網站建設、網站設計、威信網絡推廣、微信小程序定制開發(fā)、威信網絡營銷、威信企業(yè)策劃、威信品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供威信建站搭建服務,24小時服務熱線:18982081108,官方網址:muchs.cn

equals()方法是Object類的方法,所有的類都集成了此方法,還有部分類重寫了這個方法,我們看一下Object類中關于該方法的的源碼:

  1.     public boolean equals(Object obj) {

  2.         return (this == obj);

  3.     }

可以知道,凡事從Object中繼承的equals()方法底層使用的都是==,也就是兩者比較的都是地址值。
我們再來說一下String,這個類復寫了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 = value.length;

  8.             if (n == anotherString.value.length) {

  9.                 char v1[] = value;

  10.                 char v2[] = anotherString.value;

  11.                 int i = 0;

  12.                 while (n-- != 0) {

  13.                     if (v1[i] != v2[i])

  14.                         return false;

  15.                     i++;

  16.                 }

  17.                 return true;

  18.             }

  19.         }

  20.         return false;

  21.     }

該方法中,首先用==比較,如果兩者地址值相同,就返回true,如果地址值不相同,再判斷字符串內容是否相同,如果相同,返回值也是true,我們可以做一個實驗:

  1. class equalsTest{

  2.         public static void main(String[] args){

  3.                 String a = "abc";

  4.                 String b = "abc";

  5.                 String c = new String("abc");

  6.                 sop(a==b);         //true

  7.                 sop(a.equals(b));  //true

  8.                 sop(a==c);         //false

  9.                 sop(a.equals(c));  //true

  10.         }

  11.         

  12.         public static void sop(Object o){

  13.                 System.out.println(o);

  14.         }

  15. }

這個實驗中,變量a和b底層默認啟動的享元設計模式,指向的都是“abc”這個字符串對象,所以地址值相同,而語句new String("abc")底層創(chuàng)建的是兩個對象,所以c的地址值和a,b不同,用==判斷的結果為false,但是c指向的字符串內容與a是相同的,所以用equals()判斷的結果為ture。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)-成都網站建設公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

分享文章:如何進行equals()方法和==異同的比較-創(chuàng)新互聯(lián)
本文網址:http://muchs.cn/article22/deiijc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網站建設、品牌網站設計、全網營銷推廣Google、網站營銷、用戶體驗

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司