日期:2014-05-20  浏览次数:20631 次

算是基础知识吧,请看题
Java code

if(hj.getSalhj002() != memType){
    money += hj.getSalhj003();    //①
}else{
    memMoney += hj.getSalhj003();    //②  
}


很简单的一个if else语句,hj.getSalhj002()和memType均为Long值,代码运行到这里两个Long值均为33,我在debug下看hj.getSalhj002() != memType的返回值为false,但是执行的却是①,这时为什么?应该是② 呀;

将Long值后面加上.longvalue后,hj.getSalhj002() != memType的返回值为false,但是执行的是②。

求解

------解决方案--------------------
Long是个对象,两个对象比较的是地址,地址是不一样的。
.longValue()后都变成了long基本类型,这时比较的才是数值大小