Integer i = 5;
Integer j = new Integer(5);
System.out.println(new Integer(5)==new Integer(5));
System.out.println(5==new Integer(5));
System.out.println(i==j);
false
true
false求解释。

解决方案 »

  1.   

    jdk的版本?这个貌似和版本有关
      

  2.   

    这个问题当时我也郁闷了好久,楼主看看这个吧~~~
    http://blog.csdn.net/KingWolfOfSky/archive/2009/08/13/4444231.aspx
      

  3.   

    首先,明确一下jdk版本,如果是1.5及以上的话System.out.println(new Integer(5)==new Integer(5));==两边都是对象,所以比较地址,自然不等System.out.println(5==new Integer(5));
    ==左边是基本类型,右边的会被自动拆箱再去比较System.out.println(i==j);
    ==两边i,j都是对象,所以比较地址,自然不等如果是jdk1.4
    Integer i = 5; 
    System.out.println(5==new Integer(5));
    都会编译不通过
      

  4.   

    楼上的朋友。那个i==j,是ture
      

  5.   

    System.out.println(new Integer(5)==new Integer(5)); 
    两边都是对象类型 ==号比较的是地址 如果对象类型要比较相等 应该用equals()方法System.out.println(5==new Integer(5)); 
    左边是基本数据类型 右边是对象类型 但是JDK1.5开始引入了自动解包和拆包功能 所以右边拆包之后是基本类型System.out.println(i==j); 
    i和j都是对象类型的引用 自然比较地址
      

  6.   

    晕,统一一下就好了都用equles