public static void main(String[] args) {
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1==integer2);//false 比较引用地址,不一样
System.out.println(integer1.equals(integer2));//true 比较值是一样的
Integer integer3 = 100;
Integer integer4 = 100;
System.out.println(integer3 == integer4);//true
Integer integer5 =150;
Integer integer6 =150;
System.out.println(integer5 == integer6); //false。
/**
* 在 Java 中,对于 Integer 类型的对象,存在一个对象池,其中缓存了 -128 到 127 范围内的整数对象。当使用自动装箱(Autoboxing)方式创建 Integer 对象时,如果值在该范围内,将直接从对象池中获取已存在的对象,而不是每次都创建新的对象。
*
* 在你的代码中,integer3 和 integer4 的值都是 100,处于 -128 到 127 的范围内,因此它们从对象池中获取的是同一个对象,所以 integer3 == integer4 的结果为 true。
*
* 而 integer5 和 integer6 的值都是 150,不在对象池缓存的范围内,所以每次都会创建新的 Integer 对象,因此 integer5 == integer6 的结果为 false。
*
* 总结来说,当比较范围在 -128 到 127 之间的 Integer 对象时,使用 == 运算符比较的是对象的引用,而当比较超过该范围的 Integer 对象时,使用 == 运算符比较的是对象的值。
*/
BigDecimal bigDecimal = new BigDecimal("1000");
BigDecimal bigDecimal1 = new BigDecimal("1000.0");
System.out.println(bigDecimal.equals(bigDecimal1));//false
System.out.println(bigDecimal.compareTo(bigDecimal1));//0
}