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