切入正题,什么叫做128陷阱?下面我们来看一段代码
按照我们的思路来看,a==b返回true,c==d也同样返回true,但是结果却和我们想的不一样:
那么,出现这个结果的原因又是什么呢?
其实在Integet的valueOf()方当中,存有一个[-128,127]范围的数组,如果数值超过了这个范围,会在内部类中创建新的cache数组,所以比较Integer类型的应该用equals,不能用==....
除此之外我们还有另外一个解决办法:主动调用拆箱的方法之后在用==进行比较:
这样,我们就可以得到true了!!!