int k = 127(<=127);
        Integer int1 = k;
        Integer int2 = k;
        System.out.println("a." + (int1 == int2));
===========output===============================
true
==========================================
        int k = 128(>=128);
        Integer int1 = k;
        Integer int2 = k;
        System.out.println("a." + (int1 == int2));
===========output===============================
falsechar亦如次,何解??

解决方案 »

  1.   

    去看源代码,就会发现里面有个cache,默认 -128 - 127在server模式下,可以配置
    intx AutoBoxCacheMax                           = 128             {C2 product} 
      

  2.   

    Cache池的问题,Integer型以下及Boolean和Long均有此特性,但Float和Double不具备此特性…看看源码就知道了…呵呵
      

  3.   

    又是这个问题,这个跟Integer对象有关,lz看下Integer对象的源码就清楚了,
    <127是按数值计算的,>127是按对象比较了