java基本型別和包裝型別的“==”和equals()方法

amadan發表於2021-09-09

public class HelloWorld {

/*
1、基本型和基本型封裝型進行“==”運算子的比較,基本型封裝型將會自動拆箱變為基本型後再進行比較,
因此Integer(0)會自動拆箱為int型別再進行比較,如1,4行,顯然返回true。
另外兩個Integer物件進行“==”比較時,如果有一方的Integer物件是new獲得的,返回false,因為比較的是兩個物件的地址,如5,6。
3、兩個基本型的封裝型進行equals()比較,首先equals()會比較型別,如果型別相同,則繼續比較值,如果值也相同,返回true,如8,10。
4、基本型封裝型別呼叫equals(),但是引數是基本型別,這時候,先會進行自動裝箱,基本型轉換為其封裝型別,若型別不同返回false,
若裝箱後型別相同,則比較值,如果值相同,則返回true,否則返回false。如7,9。*
/
public static void main(String[] args) {

int a=257;
Integer b=257;
Integer c=257;
Integer d=new Integer(a);
Integer d1=new Integer(a);

Integer b2=57;
Integer c2=57;

System.out.println(a==b);//1
System.out.println(b==c);//2
System.out.println(b2==c2);//3
System.out.println(a==d);//4
System.out.println(b==d);//5
System.out.println(d==d1);//6

/**以上輸出結果:
 * true
   false
   true
   true
   false
   false

 */

System.out.println();

//System.out.println(a.equals(b));  編譯出錯,基本型不能呼叫equals()
System.out.println(b.equals(257.0));  //7
System.out.println(b.equals(c));       //8
System.out.println(b.equals(a));      //9
System.out.println(b.equals(d));    //10

/**
 * 以上輸出結果:

false
true
true
true

 */

}
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2310/viewspace-2798582/,如需轉載,請註明出處,否則將追究法律責任。

相關文章