关于==和equals

关于==和equals

http://img1.sycdn.imooc.com//climg/5e2970cb0903d2fc06010358.jpg

老师你好,之前我在对比前端传来的username的时候用的是==发现无法判断,后来我用equals就可以了,我在想==和equals的区别,==进行判断考虑内存地址是否相同,但我还是不明白为什么用数字就可以==,汉字就只能用equals才能生效

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

http://img1.sycdn.imooc.com//climg/5e30f8fe091fa71108150705.jpg

同学你好,比较内容时,interger也是使用equals()方法,同学指的是哪里用的==呢?可以告诉老师具体的位置吗?老师看一下。

如果我的回答解决了你的问题,请采纳,祝学习愉快。

提问者 不停奔跑的小恐龙 2020-01-29 12:45:07

http://img1.sycdn.imooc.com//climg/5e310dca095c12dd11490502.jpg

老师你好就是这个地方

  • 同学你好,由于这里是和1比较的,是和int类型比较的,也是就是说,这里接收的userId自动进行了拆箱操作。是int和int类型的比较。如果我的回答解决了你的问题,请采纳,祝学习愉快。
    2020-01-29 15:02:38
好帮手慕阿莹 2020-01-23 19:46:48

首先,基本类型只能用==来比较。

而我们比较引用类型的时候,我们往往想要比较的是具体的内容,而不关心是否是同一个对象

而使用equals方法就是在比较内容。

我们就是想比较这个username“长得”是不是一样,我们不去关系它是不是内存中的同一个对象。

所以,一半我们基本类型使用==,除基本类型外的,一般使用equas方法进行比较。

如果你用==比较,那传过来的和你直接这样”用户名“并不算同一个对象,所以就会返回false; 这并不是我们想要的结果。

所以,比较字符串的时候,请使用equals方法。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快。

  • 那如果前端传过来的是Integer那为什么就可以用==呢,就内存地址来说任然不一样吧,不是一个对象
    2020-01-23 20:31:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师