国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 12:30:35
字體:
來源:轉載
供稿:網友

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()方法,從而可公用內存中存在的對象.

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉树县| 扬州市| 岚皋县| 科技| 白城市| 上林县| 泽普县| 乐亭县| 永泰县| 木兰县| 佳木斯市| 突泉县| 密山市| 吉木萨尔县| 福泉市| 胶州市| 长海县| 宣恩县| 新民市| 大足县| 达拉特旗| 宜昌市| 平安县| 正蓝旗| 抚顺县| 太原市| 扶沟县| 鄱阳县| 郴州市| 吐鲁番市| 视频| 京山县| 遵义市| 龙南县| 包头市| 泸西县| 彰化市| 陈巴尔虎旗| 五河县| 晋中市| 兰州市|