为什么包装类型间的相等判断应该用 equals
大家都知道 Java 中 == 和 equals 的区别
== 操作比较的是两个变量的值,对于引用类型变量是判断变量是否指向同一引用对象,比地址。
equals 操作表示的两个变量是否对同一个对象的引用,即堆中的内容是否相同。
引用类型用 == 的示例:
public static void main(String[] args) {
Integer a1 = 127;
Integer a2 = 127;
Integer b1 = 128;
Integer b2 = 128;
// true
System.out.println(a1 == a2);
// false
System.out.println(b1 == b2);
}
对于 Ingeger 类型,在 [-128, 127] 区间内,是用的同一个地址,其外用的是新的。
所以:包装类型间的相等判断不用 ==,而是应该用 equals
好事定律:每件事最后都会是好事,如果不是好事,说明还没到最后。