equals ==(不求甚解) 十六

/**
 * 總之: 
“==”比較的是值【變量(棧)內存中存放的對象的(堆)內存地址】 
基本數據類型比較:自然數值。
 引用:比較的也是值,只不過不是數值,是變量本身的值(這個值是內存地址)
        比如:String str="abc";str應用的值,是內存個地址。指向的對象的值
        是"abc"
       
equal用於比較兩個對象的值是否相同【不是比地址】 ,比較的前提,兩個比較對象的類型要一樣,然後再比較值。
如果類型不一樣,返回肯定是false。
Object
public boolean equals(Object obj) {
        return (this == obj);
    }
          其他類型:xx
    public boolean equals(Object obj) {
        if (obj instanceof xx) {
            return value == ((xx)obj).byteValue();
        }
        return false;
    }
【特別注意】Object類中的equals方法和“==”是一樣的,沒有區別,而String類,
Integer類等等一些類,是重寫了equals方法,才使得equals和“==不同”,所以,
當自己創建類時,自動繼承了Object的equals方法,要想實現不同的等於比較,必須重寫equals方法。

 *
 */
public class EqualsTest {
public static void main(String[] args) {
Byte a = 1;
Byte b = new Byte("1");
Byte c = 0x1;
System.out.println("a.equals(1):"+a.equals(1));
System.out.println("a==1:"+(a==1));
System.out.println("a.equals(b):"+a.equals(b));
System.out.println("a==b:"+(a==b));
System.out.println("c.equals(1):"+c.equals(1));
System.out.println("c==1:"+(c==1));
System.out.println("======================");
Integer i = 1;
System.out.println("i.equals(1):"+i.equals(1));
System.out.println("i==1:"+(i==1));
//==============================================
//對於基本類型的變量。"=="和"equal"的區別 
   //“==”對於基本數據類型,判斷兩個變量的值是否相等。 
   //“equal”不能用於基本數據類型。只能用於類變量。對於基本數據類型要用其包裝類。 
   //對於對象變量,"=="和"equal"的區別 
System.out.println("======================");
   String st1="you "; 
   String st2="are super man"; 
   String st3="you are super man"; 
   String st4="you are super man"; 
   Boolean b1=(st1==st2); 
   Boolean b2=(st1+st2)==st3; 
   Boolean b3=(st3==st4); 
   System.out.println("st1==st2:"+b1+"-----(st1+st2)==st3:"+b2+"-----st3==st4:"+b3); 


  //因爲對象變量的存儲的是對象在內存中的路徑,即內存地址。所以用“==”比較時,即使 
  //對象的值相等,但是他們的內存地址不同,所以==的結果爲false。故“==”用於比較兩 
  //個變量的值是否相等,而不是變量引用的對象是否相等 
   Boolean r1=st1.equals(st2); 
   Boolean r2=(st1+st2).equals(st3); 
   Boolean r3=st3.equals(st4); 
   System.out.println("st1.equals(st2):"+r1+"-----(st1+st2).equals(st3):"+r2+"-----st3.equals(st4):"+r3); 


   //equal用於比較兩個對象是否相同。 
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章