==和equals 的区别

==  : 比较的是两个对象在内存中的存放地址,对象是存放在堆中,栈中存放的对象的引用,所以==是对栈中的值进行比较,若返回true代表变量的内存地址相等   。

equals : 比较的是值内容是否一致。

示例:

 

 

IntegerCache对equals 和 == 的影响:

  按上面的例子,Integer c =129 ,d = 129 ,c == d 应该是返回true,但是返回的确是false  ,因为String s1 = "abc" ,值在常量池中,而 Integer 类型的值,-128-127之间的时候就会自动的从Integer的缓存(IntegerCache)中去取,如果超过这个范围就会新建一个Integer的对象。所以 c和d 是不同的对象。

 

posted @ 2021-05-14 16:39  往事如风95  阅读(55)  评论(0)    收藏  举报