大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 java中的equals與==的區別和用法

java中的equals與==的區別和用法

更新時間:2019-09-24 10:28:19 來源:動力節點 瀏覽2226次

 

今天動力節點java培訓機構小編為大家介紹“java中的equals與==的區別和用法”,希望通過此文大家能夠掌握java中的equals與==的區別和用法,下面就隨小編一起來了解一下吧。


timg (2).jpg


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


  equals用來比較的是兩個對象的內容是否相等,由于所有的類都是繼承自java.lang.Object類的,所以適用于所有對象,如果沒有對該方法進行覆蓋的話,調用的仍然是Object類中的方法,而Object中的equals方法返回的卻是==的判斷。


  java中的數據類型可以分為兩類:


  基本數據類型


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


  基本數據類型之間的比較需要用雙等號(==),因為他們比較的是值


  引用數據類型


  接口、類、數組等非基本數據類型


  Java中的字符串String屬于引用數據類型。因為String是一個類


  當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址,所以,除非是同一個new出來的對象,他們的比較后的結果為true,否則比較后結果為false。因為沒new一次就會重新開辟一個新的堆內存空間。


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);


執行結果


true

true

false

false


  equals()方法介紹


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


  Object類中源碼


public boolean equals(Object var1) {

 return this == var1;

}


  String類中重寫后的代碼


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;

  }

 }


  總結:


  對于復合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,他們之間的比較還是內存中的存放位置的地址值,跟雙等號(==)的結果相同;如果被復寫,按照復寫的要求來。


  == 的作用:


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


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


  equals 的作用:


  引用類型:默認情況下,比較的是地址值,重寫該方法后比較對象的成員變量值是否相同


  String類的equals()方法


String a = "abc";// abc在常量池中

String b = "abc";//棧中b指向常量池中的abc

String c = new String("abc");// 在堆內存中重新開辟了一個abc的空間

String d = c.intern();//檢查字符串池里是否存在"abc"這么一個字符串,如果存在,就返回池里的字符串;如果不存在,該方法會 把"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


timg (10).jpg


以上就是動力節點java培訓機構小編介紹的“java中的equals與==的區別和用法”的內容,希望對大家有幫助,更多java最新資訊請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。


相關免費視頻教程推薦


java入門新手教程下載——字符串進行比較==與equals()區別:http://www.dabaquan.cn/xiazai/2687.html

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 激情国产白嫩美女在线观看 | 久久99精品国产99久久 | 久久综合给合久久97色美利坚 | 日本强日本不卡一 | 久久九九有精品国产23百花影院 | 天天干天天操天天碰 | 欧美不卡一区 | 性新婚a大黄毛片 | 欧美日韩中文字幕久久伊人 | 国产精品久久久久久一区二区 | 国产区在线观看视频 | 亚洲国产精品ⅴa在线观看 亚洲国产精品aa在线看 | 99热在线国产 | 亚洲一区二区三区久久久久 | 91中文字幕在线视频 | 久久国内精品自在自线400部o | 日韩精品一区二区三区免费视频 | 女人18毛片a级毛片免费看一 | 国产精品成人免费观看 | 日本一区二区三 | 欧美日韩亚洲精品一区二区三区 | 久久精品女人天堂 | 国产一区二区在线免费观看 | 国产精品综合 | 伊人久久综合谁合综合久久 | 国产自产视频在线观看香蕉 | 91麻精品国产91久久久久 | 成人网在线视频 | 视频黄在线观看 | 国产精品你懂的在线播放 | 久久riav国产精品 | 黄色资源在线观看 | 中文精品爱久久久国产 | 亚洲欧美日本国产综合在线 | 天天操天天干视频 | 射久久| 操综合| 咪咪爱毛片 | 99精品在线观看视频 | 久久精品国产99国产精品 | 2019天天干天天操 |