首页 新闻 会员 周边

双等号与equals方法的区别该如何区分?

0
[待解决问题]

小白提问:对它俩的概念比较的模糊,自行百度对此理解还是不够透彻清楚,请大神能够用最通俗的方法给予帮助,谢谢!

懒惰の绵羊的主页 懒惰の绵羊 | 菜鸟二级 | 园豆:206
提问于:2017-03-03 22:10
< >
分享
所有回答(6)
0

只用一个.比如只用双等号

双等号不能用只能用equals.那就改成成可以用双等号的.

 

吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-03 23:12
0

简而言之,"=="测试引用是否相同,而equals()测试字符串的值是否相同。除非想要检查两个字符串是否是同一个对象,否则你应该使用equals()

去冰三分糖 | 园豆:380 (菜鸟二级) | 2017-03-03 23:43
0

http://www.cnblogs.com/Eason-S/p/5524837.html
这篇文章写得已经很详细了


ycyzharry | 园豆:25651 (高人七级) | 2017-03-04 00:24
0

真正意义上 equals和==是一样的,即 a==b时,a.equals(b)=true;

但是很多人会觉得equals和==不一样是因为string类型经常用equals,别的类型用==之类的,会下意识的把它们区分开来。

其实你去看一看string下equals的源码就知道了,equals其实是先比较==,如果不相等,再比较两个对象的values是否相等,

这其实算是一种对equals的重写。源码就不贴出来了,自己去看看

所以最主要的是要看你业务逻辑上是比较他们的值相等才算是相等,还是必须是同一个引用才算是相等。

ps:

所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。
说明:对于 Integer var=?在-128 至 127 之间的赋值,Integer 对象是在 IntegerCache.cache
产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之
外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方
法进行判断。

 

让我发会呆 | 园豆:2929 (老鸟四级) | 2017-03-04 07:51
0

双等号 比较的是地址是否相同,equals比较的是内容是否相同。所以一般比较两个字符串是否相同,用的是equals,用双等号会显示false


南阳龙佑那 | 园豆:204 (菜鸟二级) | 2017-03-04 10:47
0

建议你可以先把值类型和引用类型搞清楚,这个也就自然明白了

 

~扎克伯格 | 园豆:1923 (小虾三级) | 2017-03-04 12:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册