大家看看这段代码:
public class IntergerError
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Integer num1 = new Integer(100);
Integer num2 = new Integer(100);
System.out.println(compare(num1, num2));
}
private static boolean compare(Integer num1, Integer num2)
{
boolean a = (num1 == num2);
boolean b = (num1 > num2);
boolean c = (num1 < num2);
return a||b||c;
}
}
你的答案是什么,返回一定是true?哈哈,再思考一下。
这段代码的返回值为false,这就有些不明白了,为什么会这样,既然用的是或,那不是大就是小或者是等于,肯定有一个成立。
上面也是我的想法,后来网上找了一些资料,总结起来大概是:“==”比较简单类型的值或者是比较对象是不是引用了同一个对象,至于“》”和“《”对于对象来说也就没有意义了。
所以比较对象的值的时候最好还是用equal()方法,或者是去的对象的值来进行比较。
其实之前这个事情也没有引起注意,今天遇到了,基础不牢惹的祸。望大牛们批评指正,分享你的经验。
Java对象比较误区解析

被折叠的 条评论
为什么被折叠?



