“==” 与 equals 区别 简化易懂版

首先,我们只需要看Object中的equals 方法写的是啥

 

很显然,就是一句话,“==” 与 equals方法作用完全一致。

都是用来比较在内存的首地址,即用来比较两个引用变量是否指向同一个对象。

那么为什么网上那么多教程都写的那么多呢,还区分什么String类型StringBuffer对象,其他对象。

我们继续去看源码,String类的equals 方法写的啥

 

 

与Object的equals方法完全不一样,String类重写了Object的equals方法,再看内容就是两部分

1、还是“==”;

2、转为String类后字符数组完全相等,也就是说字符串内容完全相同。

因为重写了equals方法,所以String类的“==” 与 equals 就有区别了,所以equals 的比较就变成了:比较要么完全相等,要么字符串内容一致。

 

以上内容总结两句话:

1、“==” 与 equals方法作用完全一致,都是用来比较在内存的首地址,即用来比较两个引用变量是否指向同一个对象。

2、String类由于重写了equals方法,所以String类的equals 的比较就变成了:比较要么完全相等,要么字符串内容一致。

 

posted @ 2023-03-16 15:30  Shinoburedo  阅读(56)  评论(0编辑  收藏  举报