Integer类是int的封装类型,它用关键字final来定义,意味着对象一旦创建就不能改变;java中,JVM会自动创建值的范围是-127~128所有对象,并且是单例的,所以当我们需要一个值在-127~128之间的Integer对象时,JVM不会创建新的对象,因此使用==和equals的结果是相同的。如果我们需要的Integer对象的值不再这个范围内,JVM会重新创建一个新的对象,使用==是比较两个对象的引用是否相等(内存地址),使用equals比较的是对象的值是否相等(equals被重写)。
例如:
Integer a = 12;
integer b = 12;
System.out.println(a==b);//结果为true;
System.out.println(a.equals(b));//结果为true;
Integer a = 234;
Integer b = 234;
System.out.println(a==b);//结果为false;
System.out.println(a.equals(b));//结果为true;