java 中 Integer 比较 问题

            对于 java 中 Integer  类型 比较 ,经常在面试中被提到 ,有时 还真的 让人 头疼。下面我来分析下。integer   比较问题。

解决 Integer 值比较问题。我想从以下几点说起。

1. Integer 的源码。

2.堆内存与常量池 

     从Integer 源码开 。 在  -128 到   127    之间 的 数    再次 再用 。或者赋值 直接从缓存中取。

     例子如下 :

       Integer    a = 127  ;

       Integer   b=127;

     Integer   c=999;

      Integer    d=999;

  integer  f= new  Intger (999);

  integer  t= new  Intger (999);

  System.out.println(f==d);  // true  ;  对于 new 出来 的 和 没有 new 出来的  ,new 出来的   直接进行 拆箱 处理。转换的 integer  .

System.out.println(a=b);//    true     127 在   -128 到  127  之间   所以会想成 

System.out.println(f==t) //      false   两个 new  出来的对象比较 都不想成 。

总结 :

    对于Integer  比较   用 ==   比较 

   1.对于 两个 都是 new 出来的对象 比较  一切都为 false   // Integer  a=new  Integer(10) ;   Integer  b=new Integer (10)     //false;

    2. 对于  连个 Integer 不是被 new 出来的 比较 如果 在  128-127 之间  的数  为  true 。否则 为 false    Integer  a=2;  Integer b=2;  //true 

  3. 对于 一个 是    Integer  不是被 new  出来   和 Int   笔记     都为 true 。    如  int a=1111;   Integer  b=1111; 

  4.  对于 一个int  与 一个   new  出来的 Integer  比较         一切都为 false;

    

猜你喜欢

转载自www.cnblogs.com/yuruyi/p/10884278.html