为什么
        boolean a = (Integer.valueOf("1") == Integer.valueOf("1"));
        boolean b = (Integer.valueOf("1") > Integer.valueOf("1"));
        boolean c = (Integer.valueOf("1") < Integer.valueOf("1"));
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
输出结果:
false
false
false是Integer类型不能进行比较么?

解决方案 »

  1.   

    Integer是一个对象,如果直接用==,<,>这些比较是符合对象比较法则
    并不是值~`
      

  2.   

    看看jdk的源代码就知道了
    Integer.valueOf 生成了新的Integer对象
      

  3.   

    Integer.parse(str)中实际上是new Integer(parseInt(s, 10));也就是总是返回一个新的Integer对象,所以a是falseInteger.valueOf("1")   >   Integer.valueOf("1")实际上被编译器改成Integer.valueOf("1").intValue() > Integer.valueOf("1").intValue();
    所以是false
      

  4.   

    Integer是封装类型,用操作符比较的是引用。
      

  5.   

    2楼说的对,生成新对象,所以是false.
      

  6.   

    哥哥,不是对象杂能用==比较呢,如果你确实要这样的话,哪就利用1.5以后的自动拆箱功能,如下  int a1 = (Integer.valueOf("1")   
      int a2 =   Integer.valueOf("1")); 
      boolean   a   = a1==a2;
                  
                    System.out.println(a); 
                 注JDK1。5以后才能这样子,给分吧,