这是为什么呀??

解决方案 »

  1.   

    integer类型会缓存-128到127之间的对象。通过valueOf是取缓存里的对象,不用新创建对象,可以提高性能。
      

  2.   

    Integer c = 156;
    将以上代码反编译,就会看到以下的:
    Integer c = Integer.valueOf(156);这是Java int自动装箱成Integer的特性,如果值在 -128 至 127 之间的话,那会在内存中重用。楼主可以试试以下代码
    Integer c = 127;
    Integer d = 127;Integer e = 128;
    Integer f = 128;
      

  3.   

    1.堆和堆比较
      Integer a = new Integer(1);
      Integer b = new Integer(1);
      a与b存的是Integer的堆中的地址,而不是值
      a、b指向堆中的地址显然不同所以 a==b 为false
    2。堆和栈比较
      Integer是int的封装对象,堆和栈比较的是栈的值,因为int在堆中是不开辟内存的,他在栈中的值则为他本身的值3。int类型的栈和栈比较
      直接比较的是栈的值4。Integer e=1; 这个比较特殊,直接赋值  它有独立的内存,每次赋值时将检查内存中是否有值跟他匹配的,若有则把此内存地址付给e,若没有,开辟新的内存
      

  4.   

    这个涉及到值所属的空间的问题。看图理解一下吧,另外可以看看"=="与"equals"的比较