所以这就解释了为什么a==b是true而c==d是fasle,当Integer值在[-128, 127]范围时,都是从缓存中拿的同一个对象,使用==比较地址自然相同,所以返回true;为什么明明都是同一个数字进行==比较,当数字等于127的时候,两个Integer类型的变量进行==比较是相同的,数字式128的时候就不同了呢?首先我们需要明确==和equals方法的区别,==比较两个对象的地址是否相同,equals比较两个对象的值是否相同。的时候就已经完成了,所以后面需要的时候直接拿的缓存中的对象。