基本型和基本型封装型进行“==”运算符的比较

2018-08-21  本文已影响19人  q若水

1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较, 因此Integer(0)会自动拆箱为int类型再进行比较,如1,4行,显然返回true。
2、 另外两个Integer对象进行“==”比较时,如果有一方的Integer对象是new获得的,返回false,因为比较的是两个对象的地址,如5,6。
3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true,如8,10。
4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,若类型不同返回false,
若装箱后类型相同,则比较值,如果值相同,则返回true,否则返回false。如:

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

 */
上一篇下一篇

猜你喜欢

热点阅读