黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 java中的equals與==的區(qū)別和用法

java中的equals與==的區(qū)別和用法

更新時(shí)間:2019-09-24 10:28:19 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2272次

 

今天動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編為大家介紹“java中的equals與==的區(qū)別和用法”,希望通過此文大家能夠掌握java中的equals與==的區(qū)別和用法,下面就隨小編一起來了解一下吧。


timg (2).jpg


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


  equals用來比較的是兩個(gè)對(duì)象的內(nèi)容是否相等,由于所有的類都是繼承自java.lang.Object類的,所以適用于所有對(duì)象,如果沒有對(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出來的對(duì)象,他們的比較后的結(jié)果為true,否則比較后結(jié)果為false。因?yàn)闆]new一次就會(huì)重新開辟一個(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)存地址,但在一些類庫中已經(jīng)重寫了這個(gè)方法(一般都是用來比較對(duì)象的成員變量值是否相同),比如: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;

  }

 }


  總結(jié):


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


  == 的作用:


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


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


  equals 的作用:


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


  String類的equals()方法


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

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

String c = new String("abc");// 在堆內(nè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


timg (10).jpg


以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編介紹的“java中的equals與==的區(qū)別和用法”的內(nèi)容,希望對(duì)大家有幫助,更多java最新資訊請(qǐng)繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。


相關(guān)免費(fèi)視頻教程推薦


java入門新手教程下載——字符串進(jìn)行比較==與equals()區(qū)別:http://m.ilovecolors.com.cn/xiazai/2687.html

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产午夜三级 | 性生大片一级毛片免费观看 | 午夜国产羞羞视频免费网站 | 亚洲国产爱 | yy4138殇情理论片一级毛片 | 中文在线日本免费永久18近 | 欧美日韩一区二区在线观看视频 | 国产欧美精品一区aⅴ影院 国产欧美成人一区二区三区 | 午夜在线| 天天好逼365 | 欧美性高清视频免费看www | 最近免费中文字幕完整4 | 国产片黄色 | 日韩欧美高清 | 国产91在线chines看 | 97色老99久久九九爱精品 | 欧美黑人巨大3dvideo | 超薄肉色丝袜精品足j福利 超级碰人人 | 一级a性色生活片久久毛片 一级a美女毛片 | 国产一区二区久久精品 | 成年人在线播放视频 | 色版视频在线观看 | 国产1024一区二区你懂的 | 黄网站在线播放视频免费观看 | 一级毛片完整免费版 | 亚洲一区二区三区免费观看 | 高h喷水荡肉爽文各种场合 高h喷水荡肉爽文np欲 | 日本sm极度另类视频 | 亚洲图片 中文字幕 | 午夜片网站 | 在线观看成人影院 | 亚洲午夜精品在线 | 成人网免费视频 | 香港三级日本三级人妇三级四 | 欧美人人做人人爽人人喊 | 国产美女无遮挡免费视频网站 | 中国黄色片一级 | 伊人成人在线视频 | 成人午夜免费在线观看 | 亚洲日本中文字幕一本 | 一级黄色大全 |