Integer i = 5;
Integer j = new Integer(5);
System.out.println(new Integer(5)==new Integer(5));
System.out.println(5==new Integer(5));
System.out.println(i==j);
false
true
false求解释。
Integer j = new Integer(5);
System.out.println(new Integer(5)==new Integer(5));
System.out.println(5==new Integer(5));
System.out.println(i==j);
false
true
false求解释。
http://blog.csdn.net/KingWolfOfSky/archive/2009/08/13/4444231.aspx
==左边是基本类型,右边的会被自动拆箱再去比较System.out.println(i==j);
==两边i,j都是对象,所以比较地址,自然不等如果是jdk1.4
Integer i = 5;
System.out.println(5==new Integer(5));
都会编译不通过
两边都是对象类型 ==号比较的是地址 如果对象类型要比较相等 应该用equals()方法System.out.println(5==new Integer(5));
左边是基本数据类型 右边是对象类型 但是JDK1.5开始引入了自动解包和拆包功能 所以右边拆包之后是基本类型System.out.println(i==j);
i和j都是对象类型的引用 自然比较地址