老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Java中equals與==的區別是什么

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

我們提供的服務有:成都網站制作、成都網站設計、微信公眾號開發、網站優化、網站認證、敘州ssl等。為1000多家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的敘州網站制作公司

背景介紹

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

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()方法

在之前文章介紹JVM的時候,提到過一個常量池,這里咱們再來介紹下

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

看完上述內容,你們對Java中equals與==的區別是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。


網站名稱:Java中equals與==的區別是什么
當前地址:http://www.xueling.net.cn/article/geopjg.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 草草免费视频 | 男人j捅女人p | 爱爱午夜视频 | 亚洲欧洲自拍拍偷午夜色无码 | 午夜国产精品影院在线观看 | 一级做a爰片性色毛片 | 91动漫| 欧美人与动牲交精品 | 天天摸夜夜添狠狠添高潮出水 | 两个男人吮她的花蒂和奶水视频 | 大尺度AV无码污污福利网站 | 希岛爱理av一区二区三区 | 国产精品最新网址 | 黄色一级片免费的 | 亚洲综合区夜夜久久久 | 国产精妇在线观看第一区 | 91一区二区三区久久久久国产乱 | AV导航第一福利网 | 中国一级毛片儿 | www.日本农妇.无码精品 | 一级毛片播放 | 亚洲婷婷五月综合狠狠爱 | 国产在线无码视频观看草草视频 | 成人嫩草 | 97SE亚洲国产综合自在线观看 | XXXX漂亮少妇XXXXHD| 催眠教师~淫辱の教室 | 欧美国产片 | 男女啪啪激烈高潮免费动态图 | 四虎影视永久在线观看 | 人妻系列无码专区无码中出 | aⅴ天堂| 成人性生交大片免费看中文 | 日韩AV高清在线看片 | 日本韩国在线观看 | 欧美日韩一区二区三区自拍 | 久久国产专区 | 中文字幕第一页在线视频 | 麻豆传媒观看 | 中文字幕在线中文字幕在线中三区 | 久久精品免费一区二区喷潮 |