最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java初學(xué)者了解"=="與equals的區(qū)別

 更新時(shí)間:2019年11月30日 10:55:22   作者:天之驕子zz  
這篇文章主要介紹了Java初學(xué)者了解"=="與equals的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java初學(xué)者了解"=="與equals的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1.基本數(shù)據(jù)類型當(dāng)中,"=="比較的是兩個(gè)變量的值

 int a=5;
 int b=4;
 int c=5;
 System.out.println(a==b);//false
 System.out.println(a==c);//true

2.引用數(shù)據(jù)類型當(dāng)中,"=="比較的是兩個(gè)對象在內(nèi)存里是不是同一個(gè)對象,就是說在內(nèi)存里的存儲位置(地址,引用)是否一致。(這里拿String舉例)

 String str1 = new String("Hello");
 String str2 = new String("Hello");
 String str3 = new String("World");
 System.out.println(str1 == str2);// false,new出來的對象在堆當(dāng)中,屬于兩個(gè)對象
 System.out.println(str1 == str3);// false,同上

3.兩個(gè)String對象的存儲值是一樣的,但有可能在內(nèi)存里存儲在不同的地方。

String str1="Hello";
String str2="Hello";
String str3 = new String("Hello");
//對String對象進(jìn)行==比較    
System.out.println(str1==str2);//true,str1和str2在方法區(qū)的常量池當(dāng)中,屬于同一個(gè)引用
System.out.println(str1==str3);//false,str3在堆當(dāng)中,與str1存儲位置不一致
System.out.println(str2==str3);//false,同上

4."=="比較的是引用(內(nèi)存里的存儲位置),而String類中equals()方法比較的是字符串的內(nèi)容。

String str1="Hello";
String str2="Hello";
String str3="World";
String str4 = new String("Hello");
String str5 = new String("World");
    
System.out.println(str1.equals(str2));//true,內(nèi)容相同
System.out.println(str1.equals(str3));//false,內(nèi)容不同
System.out.println(str1.equals(str4));//true,內(nèi)容相同
System.out.println(str1.equals(str5));//false,內(nèi)容不同

5.public boolean equals(Object obj)這個(gè)方法是由Object對象提供的,可以由子類進(jìn)行重寫。

默認(rèn)的實(shí)現(xiàn)只有當(dāng)對象和自身進(jìn)行比較時(shí)才會返回true,這個(gè)時(shí)候和"=="是等價(jià)的。下面是Object類下的equals()方法:

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

而String類繼承至Object類,對equals()方法進(jìn)行了方法重寫,下面是String類下的equals方法():

public boolean equals(Object anObject) {
    if (this == anObject) {
      return true;//同一個(gè)引用,說明是同一對象,字符序列內(nèi)容一定相同
    }
    if (anObject instanceof String) {//判斷是不是String對象
      String anotherString = (String) anObject;//下轉(zhuǎn)型,轉(zhuǎn)換為String字符串
      int n = value.length;
      if (n == anotherString.value.length) {//判斷長度是否相同
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = 0;
        while (n-- != 0) {
          if (v1[i] != v2[i])//判斷字符內(nèi)容
              return false;
          i++;
        }
        return true;
      }
    }
    return false;
  }

另外,String,BitSet,Date,和File都對equals方法進(jìn)行了重寫,對兩個(gè)String對象而言,值相等意味著它們包含同樣的字符序列,對于基本類型的包裝類來說;值相等意味著對應(yīng)的基本類型的值一樣。

7.總結(jié):

(1)."=="如果比較的是對象是基本數(shù)據(jù)類型,則比較的是值是否相等;"=="如果比較的對象是引用數(shù)據(jù)類型,則比較的是引用,即比較在內(nèi)存當(dāng)中的存儲位置(地址)是否相同,也可以理解為是否是同一個(gè)對象(a is a)。

(2).equals()方法默認(rèn)比較的是是否為同一對象(子類沒有重寫父類equals方法),String類的equals()方法比較的是內(nèi)容(該類對equals()方法進(jìn)行了重寫,即a like a)是否相同,自定義類也可重寫equals()方法,這里不在贅述。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java算法之時(shí)間復(fù)雜度和空間復(fù)雜度的概念和計(jì)算

    Java算法之時(shí)間復(fù)雜度和空間復(fù)雜度的概念和計(jì)算

    這篇文章主要介紹了Java算法之時(shí)間復(fù)雜度和空間復(fù)雜度的概念和計(jì)算,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • tomcat的keepAlive參數(shù)深入探究

    tomcat的keepAlive參數(shù)深入探究

    這篇文章主要為大家介紹了tomcat的keepAlive參數(shù)深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 使用IDEA搭建MyBatis環(huán)境詳細(xì)過程

    使用IDEA搭建MyBatis環(huán)境詳細(xì)過程

    這篇文章主要介紹了使用IDEA搭建MyBatis環(huán)境的相關(guān)知識,包括創(chuàng)建項(xiàng)目的過程及導(dǎo)入mybatis的核心jar包的詳細(xì)說明,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-05-05
  • 十五道tomcat面試題,為數(shù)不多的機(jī)會!

    十五道tomcat面試題,為數(shù)不多的機(jī)會!

    這篇文章主要介紹了十五道tomcat面試題,Tomcat的本質(zhì)是一個(gè)Servlet容器。一個(gè)Servlet能做的事情是:處理請求資源,并為客戶端填充response對象,需要的朋友可以參考下
    2021-08-08
  • Mybatis配置之<properties>屬性配置元素解析

    Mybatis配置之<properties>屬性配置元素解析

    這篇文章主要介紹了Mybatis配置之<properties>屬性配置元素解析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java遍歷Map四種方式講解

    Java遍歷Map四種方式講解

    這篇文章主要介紹了Java遍歷Map四種方式講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • springboot中的Application.properties常用配置

    springboot中的Application.properties常用配置

    這篇文章主要介紹了springboot中的Application.properties常用配置,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java @Data布爾值boolean的坑及解決

    java @Data布爾值boolean的坑及解決

    本文介紹了在使用Spring框架時(shí),遇到的一個(gè)屬性命名規(guī)則問題,在Spring框架中,如果類的屬性名稱第一個(gè)字母小寫,第二個(gè)字母大寫,那么在調(diào)用set方法時(shí),Spring會將屬性的后面的字母轉(zhuǎn)換為小寫,這種情況下,如果下游消費(fèi)端調(diào)用得到的返回json串
    2024-10-10
  • java中使用url進(jìn)行編碼和解碼

    java中使用url進(jìn)行編碼和解碼

    這篇文章主要介紹了java中使用url進(jìn)行編碼和解碼,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • SpringBoot之通過BeanPostProcessor動態(tài)注入ID生成器案例詳解

    SpringBoot之通過BeanPostProcessor動態(tài)注入ID生成器案例詳解

    這篇文章主要介紹了SpringBoot之通過BeanPostProcessor動態(tài)注入ID生成器案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評論

东光县| 阿坝县| 东山县| 庄浪县| 龙游县| 祁东县| 温泉县| 格尔木市| 宁都县| 藁城市| 南川市| 颍上县| 宁蒗| 于田县| 玛多县| 庄浪县| 凤城市| 满城县| 利津县| 孝感市| 屯留县| 潜山县| 平江县| 定日县| 宣化县| 永平县| 新疆| 贵溪市| 拜泉县| 介休市| 沿河| 金山区| 舒兰市| 民县| 久治县| 宜良县| 莎车县| 祁连县| 和平区| 高邑县| 永州市|