整个逻辑说起来有点复杂我就不赘述我只举一个简单的例子 ..
现在又2个 变量 Integer it1 = 1.Integer it2 = 1. 这2个变量的值是从数据库里的2张表里面取出来的..用的数据库是sqlserver2008 持久层是 hibernate.
 然后 if(it1==it2){
         成功;
          }
首先值都是一样的. 然后连接远程数据库的时候 判断永远不成功.连本地数据库的时候判断会成功.这点最让我费解.解决的办法是都转成int用==比较..
真心觉得严谨很重要.

解决方案 »

  1.   

    Integer是个引用类型,不能用==做对比判断。
      

  2.   

    沙发拿了.坐等大神. 
    我很想知道 本地连接数据库很远程连数据库难道复制方式会不同?
    也就是说 本地连接数据库给Integer it1 = 1;的赋值方式是这样.远程连接数据库给是
    Integer it1 =new Integer(1);
    难道是这个原因?
      

  3.   

    一个是引用类型 一个是值类型
    Integer属于引用类型 比较的时候比较内存地址
    int 属于值类型  比较的时候比较值
    虽然他们值是一样的  但引用的内存地址不一样
      

  4.   


    Integer 内部会缓存-128到127的对象,这个区间内如果不new就会使用缓存对象,但是new了就不==了。
      

  5.   

    Integer是引用类型。Integer it1 = 1.Integer it2 = 1.it1和it2现在是两个对象,你用==去判断他们是否相等永远都不会成功,要么你把他们转换喂int再比较,要么是有equalse去比较。
      

  6.   

    错了,当Integer类型数据值在[-128,127]这个范围时可以直接用==比较,超过这个范围就得不到正确的答案了,建议最好使用equals
      

  7.   

    用“==”肯定是有问题的。。不过学到一个新的:
    当Integer类型数据值在[-128,127]这个范围时可以直接用==比较
      

  8.   

    http://www.ticmy.com/?p=110