怎么判断整数的值是否相等

  介绍

这期内容当中小编将会给大家带来有关怎么判断整数的值是否相等,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

面试中经常遇到一个问题:

Integer  a =, 10;   Integer  b =时间10;大敌;;   System.out.println (==a  b),,   时间=a  1000;   b =,, 1000;   System.out.println (==a  b);

<强>两个打印值分别是多少吗?

详解:真的,假的,

默认IntegerCache。低的是-128年,整数。高是127,如果在这个区间内,他就会把变量我当做一个变量,放到内存中;但如果不在这个范围内,就会去新的一个整数对象,在这个题目中,10个在范围内,所以直接比较其值;1000年不在范围内,所以jdk帮我新建了两个实例,这样在用==,肯定是假的。

<强>补充:整型值判断是否相等问题要用等于判断不要用“==迸卸?/强>

昨天在开发中遇到一个问题,定义了两个整数变量,暂且定义为整数;整数b;

这两个值由前端赋值并传到后台,前台传的是=12345,b=12345,但我在后台比较的时候如果(a==b),却返回假,好无语啊,不都是123吗?为什么返回假,后来改为=(),返回正确的,但其中的有些端倪还不太清楚,现总结下:

我们知道整数是int的包装类,在jdk1.5以上,可以实现自动装箱拆箱,就是jdk里面会自动帮我们转换,不需要我们手动去强转,所以我们经常在这两种类型中随意写,平时也没什么注意

但整数他是对象,我们知道==比较的是堆中的地址,但有个奇怪的事是,如果=123整数,整数b=123,可以返回真,但如果=12345整数,整数b=12345,返回假,这就是jdk的东西,我们看下整数的源码

public  static  Integer 返回对象的值(int 我),{   ,if (小姐:祝辞=,IntegerCache.low ,,,小姐:& lt;=, IntegerCache.high)   return 才能;IntegerCache.cache[小姐:+,(-IntegerCache.low)];   ,return  new 整数(我);   }

默认IntegerCache。Integer.high低是-127年是128年,如果在这个区间内,他就会把变量我当做一个变量,放到内存中;但如果不在这个范围内,就会去新的一个整数对象,

而我在代码中,两个整数的值都不在这个范围内,所以jdk帮我新建了两个实例,这样在用==,肯定是假的。

所以如果要比较整数的值,比较靠谱的是通过Integer.intValue();这样出来的就是int值,就可以直接比较了,或者=()比较

整数的底层=是这样定义的先拆箱为int再来比较

public  boolean =(Object  obj), {   if 才能;(obj  instanceof 整数),{   ,,return  value ==,((整数)obj) .intValue ();   ,,}   return 才能;假;   ,}

上述就是小编为大家分享的怎么判断整数的值是否相等了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

怎么判断整数的值是否相等