1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      Java中equals與==的區(qū)別是什么-創(chuàng)新互聯(lián)

      今天就跟大家聊聊有關(guān)Java中equals與==的區(qū)別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

      目前創(chuàng)新互聯(lián)已為超過(guò)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、施甸網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

      背景介紹

      == 比較的是變量(棧)內(nèi)存中存放的對(duì)象的(堆)內(nèi)存地址,用來(lái)判斷兩個(gè)對(duì)象的地址是否相同,即是否是指相同一個(gè)對(duì)象。比較的是真正意義上的指針操作。

      equals用來(lái)比較的是兩個(gè)對(duì)象的內(nèi)容是否相等,由于所有的類都是繼承自java.lang.Object類的,所以適用于所有對(duì)象,如果沒(méi)有對(duì)該方法進(jìn)行覆蓋的話,調(diào)用的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。

      java中的數(shù)據(jù)類型可以分為兩類:

      基本數(shù)據(jù)類型

      byte,short,char,int,long,float,double,boolean

      基本數(shù)據(jù)類型之間的比較需要用雙等號(hào)(==),因?yàn)樗麄儽容^的是值

      引用數(shù)據(jù)類型

      接口、類、數(shù)組等非基本數(shù)據(jù)類型

      Java中的字符串String屬于引用數(shù)據(jù)類型。因?yàn)镾tring是一個(gè)類

      當(dāng)他們用(==)進(jìn)行比較的時(shí)候,比較的是他們?cè)趦?nèi)存中的存放地址,所以,除非是同一個(gè)new出來(lái)的對(duì)象,他們的比較后的結(jié)果為true,否則比較后結(jié)果為false。因?yàn)闆](méi)new一次就會(huì)重新開(kāi)辟一個(gè)新的堆內(nèi)存空間

      Entity entity = new Entity();
      Entity entity1 = new Entity();
      Entity entity2 = entity;
       
      System.out.println(entity==entity2);
      System.out.println(entity.equals(entity2));
      
      System.out.println(entity.equals(entity1));
      System.out.println(entity==entity1);

      執(zhí)行結(jié)果

      true
      true
      false
      false

      equals()方法介紹

      Java中所有的類都是繼承與Object這個(gè)基類的,在Object類中定義了一個(gè)equals方法,這個(gè)方法的初始行為是比較對(duì)象的內(nèi)存地址,但在一些類庫(kù)中已經(jīng)重寫(xiě)了這個(gè)方法(一般都是用來(lái)比較對(duì)象的成員變量值是否相同),比如:String,Integer,Date 等類中,所以他們不再是比較類在堆中的地址了、

      Object類中源碼

      public boolean equals(Object var1) {
       return this == var1;
      }

      String類中重寫(xiě)后的代碼

      public boolean equals(Object var1) {
        if (this == var1) {
         return true;
        } else {
         if (var1 instanceof String) {
          String var2 = (String)var1;
          int var3 = this.value.length;
          if (var3 == var2.value.length) {
           char[] var4 = this.value;
           char[] var5 = var2.value;
      
           for(int var6 = 0; var3-- != 0; ++var6) {
            if (var4[var6] != var5[var6]) {
             return false;
            }
           }
      
           return true;
          }
         }
      
         return false;
        }
       }

      總結(jié):

      對(duì)于復(fù)合數(shù)據(jù)類型之間進(jìn)行equals比較,在沒(méi)有覆寫(xiě)equals方法的情況下,他們之間的比較還是內(nèi)存中的存放位置的地址值,跟雙等號(hào)(==)的結(jié)果相同;如果被復(fù)寫(xiě),按照復(fù)寫(xiě)的要求來(lái)。

       == 的作用:

        基本類型:比較的就是值是否相同

        引用類型:比較的就是地址值是否相同

      equals 的作用:

        引用類型:默認(rèn)情況下,比較的是地址值,重寫(xiě)該方法后比較對(duì)象的成員變量值是否相同

      String類的equals()方法

      在之前文章介紹JVM的時(shí)候,提到過(guò)一個(gè)常量池,這里咱們?cè)賮?lái)介紹下

      String a = "abc";// abc在常量池中
      String b = "abc";//棧中b指向常量池中的abc
      String c = new String("abc");// 在堆內(nèi)存中重新開(kāi)辟了一個(gè)abc的空間
      String d = c.intern();//檢查字符串池里是否存在"abc"這么一個(gè)字符串,如果存在,就返回池里的字符串;如果不存在,該方法會(huì) 把"abc"添加到字符串池中,然后再返回它的引用。
        
      
      System.out.println(a==b);
      System.out.println(a.equals(b));
      System.out.println(a==c);
      System.out.println(a.equals(c));
      System.out.println(a==d);
      System.out.println(a.equals(d));

      true
      true
      false
      true
      true
      true

      看完上述內(nèi)容,你們對(duì)Java中equals與==的區(qū)別是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


      文章標(biāo)題:Java中equals與==的區(qū)別是什么-創(chuàng)新互聯(lián)
      文章轉(zhuǎn)載:http://ef60e0e.cn/article/csdogh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        深州市| 马山县| 阿拉尔市| 元谋县| 娱乐| 海原县| 隆子县| 繁昌县| 宜兰市| 江源县| 麟游县| 娄烦县| 苍南县| 盘山县| 佳木斯市| 永安市| 长兴县| 盖州市| 买车| 江永县| 土默特右旗| 湘西| 安西县| 友谊县| 宜宾县| 成安县| 铅山县| 瑞丽市| 塔城市| 富平县| 甘孜| 茌平县| 黄浦区| 济阳县| 昆明市| 济源市| 观塘区| 常熟市| 大冶市| 丹阳市| 将乐县|