本文章提供于初学者或者复习基础知识的人参考,如有错漏敬请补充!
public static void main(String[] args){
int a = 33;
long l = 33L;
// 当==用于基本数据之间比较的时候(包括String),比较的是两者之间的值。
System.out.println(a == l);
Integer integer1 = 33;
Integer integer2 = 33;
Integer integer3 = new Integer(33);
/*
当 == 用于类之间的比较的时候,比较的两个对象的地址。Integer integer1 = 33 创建的时候系统进行自动装箱实际执行的是
Integer integer1 = Integer.valueOf(33) 然后参考Integer的源代码,当数值在-128到127之间的时候返回的是缓存的Integer
对象。
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
*/
System.out.println(integer1 == integer2);
System.out.println(integer2 == integer3);
/*
当 == 比较基本数据类型和包装类的时候,包装类会进行自动拆箱操作。
*/
Long long1 = 33L;
System.out.println(long1 == a);
/*
Object是超类,所有的对象都是继承Object。equals是Object下的方法,比较的是两个对象的地址。对象继承Object重写了
equals方法进行比较。
Long的equals方法先是通过 instanceof关键字查看integer1是否为Long的自身类或者子类,然后再比较引用地址是否相同。
public boolean equals(Object obj) {
if (obj instanceof Long) {
return value == ((Long)obj).longValue();
}
return false;
}
*/
System.out.println(long1.equals(integer1));
} |