关于基本数据类型
==比较的是他们的value值
毋庸置疑肯定是true因为它们的值都是128
关于引用数据类型
==比较的是他们的地址值
因为“==”比较的是地址值,上述“ i ”和“ ii ”是两个对象,地址值肯定不同所以第一个判断为false
但是有的人就问了我的为什么就是true?说好的两个对象地址不同呢?:
这是因为Integer引用类型内部有一个缓存机制
简单理解蓝色这一行: “i>=-128 并且 i<=127” 案例中 " -128 <126< 127"所以他们都是从缓存中拿取的同一个对象所以用==来比较肯定就是true啦 因为同一个对象地址值肯定相同的咯
所谓equals其实是个方法->equals()
所以不同的对象引用equals()方法的比较规则是不同的,因为他们内部重写了equlas()方法的比较规则,比如上述例子中Integer类中重写了equlas()方法并且制定的规则是去比较他的value值
所以结果就为true
真正的原因可能不是和我说的一样,但是这样理解可能比较容易些,如果说的那里不对欢迎评论区指正!!