Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3L;
System.out.println(c == d);
System.out.println(e == f);
System.out.println(c == (a + b));
System.out.println(c.equals(a + b));
System.out.println(g == (a + b));
System.out.println(g.equals(a + b));
输出是:
true
false
true
true
true
false没搞懂,为啥?

解决方案 »

  1.   

    只给楼主说一下Integer是有范围的,,c,d都为127就是true大于127就都是falseInteger范围-127到127
      

  2.   

    Integer e = 321;
    Integer f = 321;System.out.println(e == f);最有争议的应该是这个正如1楼所说当值是 -128 ~ 127 的时候 Integer判断是直接用的int原始数据类型 所以为 == 为true 当超出这个范围的时候 则是new了一个对象 == 就为false了
      

  3.   


    也就是说 当 值是 -128 ~ 127 时是用 Integer i = 100;
    等效于
    Integer i = Integer.valuseOf(100);当不是以上范围的时候 使用的是 Integer i = 200;
    等效于
    Integer i = new Integer(200);