java 中 Integer 比较 问题

博客主要分析Java中Integer类型比较问题,这常出现在面试中。从Integer源码和堆内存与常量池说起,指出在 -128 到 127 之间的数再次使用或赋值会从缓存中取。还总结了不同情况下用 == 比较的结果。

            对于 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;

 

    

 

转载于:https://www.cnblogs.com/yuruyi/p/10884278.html

Java 中,Integer 类型比较大小可采用以下方法: #### 使用 `compareTo()` 方法 `compareTo()` 方法是 Integer 类实现的 `java.lang.Comparable` 接口中的方法。若该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。其底层依据的是 `compare` 方法。示例代码如下: ```java public class IntegerCompareToDemo { public static void main(String args[]) { Integer b = 5; Integer c = 15; System.out.println(b.compareTo(c)); // 输出-1 b = 15; System.out.println(b.compareTo(c)); // 输出0 b = 20; System.out.println(b.compareTo(c)); // 输出1 } } ``` #### 使用 `equals()` 方法 `equals()` 方法用于比较两个 Integer 对象的值是否相等,返回布尔类型。要注意的是,使用时需处理 `null` 值,防止出现 `NullPointerException`。示例代码如下: ```java public class IntegerEqualsDemo { public static void main(String[] args) { Integer a = 10; Integer b = 10; Integer c = 20; System.out.println(a.equals(b)); // 输出true System.out.println(a.equals(c)); // 输出false } } ``` #### 使用 `==` 运算符 不过不推荐使用 `==` 运算符比较 Integer 对象,因为 `==` 比较的是两个对象的引用是否相等,而非对象的值。但当数值在 -128 到 127 之间时,JavaInteger 缓存机制会使 `==` 看起来能正确比较值,超出这个范围则可能出现意外结果。示例代码如下: ```java public class IntegerOperatorDemo { public static void main(String[] args) { Integer a = 100; Integer b = 100; Integer c = 200; Integer d = 200; System.out.println(a == b); // 输出true System.out.println(c == d); // 输出false } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值