public class Test { public static void main(String[] args) { Integer a = new Integer(100); Integer b = new Integer(100); /*compareTo返回值:若a>b则返回1;若a==b则返回0;若a<b则返回-1*/ int result = a.compareTo(b); System.out.println(a>b); System.out.println(a==b); System.out.println(a>b); System.out.println(result); } }
false false false 0
System.out.println("a==="+a); System.out.println("b==="+b);输出结果:
a===100 b===100奇怪了吧!
实际上是根据其intValue方法的返回对应的数值来进行比较的。因此返回肯定是false.
知道问题原因,解决起来就容易了。两种方法:public int compareTo(Integer object) { int thisValue = value; int thatValue = object.value; return thisValue < thatValue ? -1 : (thisValue == thatValue ? 0 : 1); }由此可知,底层实现还是一样的。