一、分析
基本类型可以比较大小,其所对应的包装类型都实现了Comparable接口此问题。
二、场景
代码如下:
public class Client{
public static void main(String[] args){
Integer i = new Integer(100);
Integer j = new Integer(100);
compare(i,j);
}
}
public static void compare(Integer I, Integer j){
System.out.println(i == j);
System.out.println(i > j);
System.out.println(i < j);
}
既然基本类型和包装类型是可以*转换的,那上面的代码的输出结果是不是可以打印两个值相等呢?运行结果如下:
false
false
false
竟然是3个false,我们来一一解释:
I == j:在Java中“==”是用来判断两个操作数是否相等关系的,如果基本类型是判断值是否相等,如果是对象则判断地址是否相等。这里很明显是两个对象,两个地址不相等。
i > j 和i < j:">"和"<"用来判断两个数字类型的大小关系,注意只能是数字类型的判断,对于Integer包装类型,是根据intValue()方法的返回值(也就是相应的基本类型)进行比较的。显然两者是相等的,没有大小关系。
三、建议
问题分析清楚了,只要是两个对象之间的比较,就应该采用相应的方法,而不是通过Java的默认机制">","<"等机制来处理。除非你确定对此非常了解。
新技术,新未来!欢迎大家关注
“1024工场”微信服务号
,时刻关注我们的最新的技术讯息!
(甭客气!尽情的扫描或者长按!)