中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的==與equals有什么不同

發布時間:2020-11-17 16:26:32 來源:億速云 閱讀:141 作者:Leah 欄目:編程語言

這篇文章給大家介紹Java中的==與equals有什么不同,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Java中==運算符與equals方法的區別及intern方法詳解

1.  ==運算符與equals()方法
2. hashCode()方法的應用
3. intern()方法

/* 
Come from xixifeng.com 
Author: 習習風(StellAah) 
*/ 
public class AboutString2  
{ 
  public static void main(String[]arsgs) 
  { 
    String myName="xixifeng.com"; 
    String myName3="xixifeng";  
    String myName4=".com"; 
    String myName5=myName3+myName4; 
    String myName6="xixifeng.com"; 
     
    if(myName==myName5) 
    { 
       
      System.out.println("myName==myName5"); 
    } 
    else 
    { 
      System.out.println("myName="+myName); 
      System.out.println("myName5="+myName5); 
      System.out.println("myName!=myName5"); 
    } 
    //經運行打印出: myName!=myName5 
     
    if(myName==myName6) 
    { 
      System.out.println("myName==myName6"); 
    } 
    else 
    { 
      System.out.println("myName!=myName6"); 
    } 
    //經運行得出: myName!=myName5,myName==myName6 
     
    //myName,myName5(myName5的值是由myName3+myName4得到的),myName6 這三個對象的值是相等的, 為什么 它們之間用==進行運算的結果是 myName!=myName5,myName==myName6呢? 
    //原因在于==運算符 
    //顯然==參與String運算中不是用來比較值的,而是用來比較對象是否相等的. 
    //那么在String運算中,通過什么方法來比較它們的值是否相等呢,java 提供了equals()方法 ,主要用于比較對象的值是否相等 
    //示例如下: 
    //myName==myName5 是false (不是同一個對象) 
    if(myName.equals(myName5)) 
    { 
      System.out.println("myName.equals(myName5) 比較的結果是true !"); 
    } 
    else 
    { 
      System.out.println("myName.equals(myName5) 比較的結果是false !"); 
    } 
    //經運行輸出:myName.equals(myName5) 比較的結果是true ! 在由于myName與myName5不是同一個對象,充分說明: 
    //equals()方法[是用來比較對象的值是否相等] 
     
    //再拋出疑問:是不是兩個對象的哈希值相等就說明這兩個對象相等呢? 
    //(由上述測試myName==myName5 得出false ①表明myName與myName5不是同一個對象) 
    System.out.println(myName.hashCode()); 
    System.out.println(myName5.hashCode()); 
    //經測試 ②myName與myName5的哈希值相等 
    //由①,② 得出: 兩個對象的hashCode值相等,不能表明其對象也相等. 
 
    //拋出疑問: 怎樣使myName與myName5的對象相等呢? 
    //引入intern()方法 
    myName5=myName5.intern(); 
    if(myName==myName5) 
    { 
       
      System.out.println("(myName==myName5) 得true"); 
    } 
    else 
    { 
      System.out.println("(myName==myName5) 得false"); 
    } 
    //經運行打印出: (myName==myName5) 得true 
    //結論: intern()方法能使兩個(對象不相等而值相等的)對象變得相等 
    //myName5.intern();的意思,可以解釋為: myName5在內存中查找對象嫁給自己,條件是,該對象要與自己的值相等. 找到了,就指定該對象. 
    //myName5找到對象,并認定,就不必再創建對象了,所以說這樣做,可以節約內存資源. 
     
    //拋出疑問: 什么樣的對象建議使用intern()呢? 
    // myName="xixifeng.com" myName6="xixifeng.com", myName與myName6的對象是相等的,上述已經證實. 
    // 所以說,對象在直接賦予同樣的值的時候沒有必要用intern(). 
    //myName="xixifeng.com" myName5=myName3+myName4,它們的值相等,但是對象不相等,上述已經證實. 
    //所以說, 對象在間接賦予(有可能與已有對象)同樣的值的時候,建議用一下intern()方法,從而可公用內存中存在的對象. 
     
     
    //==參與int型運算中,也營造類似的比較 
    int i=8; 
    int j=3; 
    int k=5; 
    int m=j+k; 
    int n=8; 
    if(i==m) 
    { 
      System.out.println("i="+i); 
      System.out.println("m="+m); 
      System.out.println("i==m"); 
    } 
    else 
    { 
      System.out.println("i!=m"); 
    } 
     
    if(i==n) 
    { 
      System.out.println("... ... ... ..."); 
      System.out.println("i="+i); 
      System.out.println("n="+n); 
      System.out.println("i==n"); 
    } 
    else 
    { 
      System.out.println("i!=n"); 
    } 
    //經運行得出i=m(m的值由j+k得到),i=n 
    //i,m,n的值都相等 , 由于i==m 得出true i==n得出true  
    //所以可以得出結論: ==參與非對象類型運算時,是用來比較常量的值是否相等    
  } 
} 

綜上所屬,得出如下結論:

1) ==運算符參與對象類型運算時是用來比較對象是否想得的.
2) ==運算符參與非對象類型運算時是用來比較值是否相等的.
3) equals()方法用于比較兩個對象的值是否相等
4) 兩個對象的hashCode()值相等,并不代表其對象也相等
5) intern()方法能使兩個(對象不相等而值相等的)對象變得相等,從而可以公用內存已有的對象,這樣做可以節約內存資源.
6) 對象在間接賦予(有可能與已有對象)同樣的值的時候,建議用一下intern()方法,從而可公用內存中存在的對象.

關于Java中的==與equals有什么不同就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖北省| 大兴区| 肇庆市| 阜城县| 盱眙县| 邹平县| 林州市| 公主岭市| 弋阳县| 辽阳市| 崇信县| 革吉县| 乌拉特前旗| 叶城县| 永丰县| 小金县| 佳木斯市| 泸水县| 望奎县| 濮阳县| 临潭县| 澎湖县| 馆陶县| 宁陵县| 札达县| 赤水市| 当阳市| 聂拉木县| 个旧市| 双柏县| 浠水县| 高平市| 长武县| 茌平县| 嘉荫县| 精河县| 大姚县| 金山区| 灵台县| 镇平县| 区。|