本帖最后由 zheniswo 于 2012-10-23 17:37:03 编辑

解决方案 »

  1.   

    第三种情况:首先你的id是Long类型,它属于引用类型,比较是否相等需要用equals的,我不知道你的storefacs.getId()取出来是什么类型,我想可能是long类型吧,它属于基础类型的,只能用==来比较的
    1和2可以正确判断
      

  2.   

    情况三,你system.out.println(id.intValue() != storefacs.getId().intValue()));
    看看结果是什么,我猜应该都是false;
    另外更正一下楼上的,long是基本类型,基本类型有8种:boolean、char、byte、short、int、long、float、double。除此之外的都是引用类型。因此这里比的确实是值,我猜可能的原因是基本类型不同。
    id != storefacs.getId()(你看看storefacs.getId()的返回类型是什么)
    你使用equals或者setValue的时候比较的就是值(这个值应该已经被默认转换了)
      

  3.   

    2楼的大哥。。我说的Long的引用类型,不是long请看清楚。。