对于对象来说,==比较的是内存地址。
.equals()对于object类型来说也是比较内存地址。其他类继承obect类型的话,用override()方法重写.equals()方法,就变成比较内容。
对于原始数据类型(如int),这个==就是比较内容,比如 1==1,那肯定是对的。而对于对象来说,他们是比较地址。
public class BoxTest2
{
public static void main(String[] args)
{
// Integer i1 = 100;
// Integer i2 = 100;
//
// if (i1 == i2)
// System.out.println("i1 == i2");
// else
// System.out.println("i1 != i2");
Integer i1 = 200;
Integer i2 = 200;
if (i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
}
}
这是个JDK5.0自动Integer-->int或者int-->Integer的例子。当在-128~~~127之间时,i1==i2,比较的是原始数据类型,即int型。所以当i1=100,i2=100时,i1==i2是对的。i1=200,i2=200时,是Integer类型,比较的是内存地址,所以i1==i2是错的。
class,interface,enum 地位是一样的。