关于String的比较

关于String的比较

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

因为 this.getName().equalse(temp.getName()) 中 this.getName()的结果是String,而temp.getName()得到的结果也是字符串,所以这就相当于字符串与字符比较,因为字符串中的equalse已经被重写了,它比较的是

字符串的值是否相等。  
而this.getMonth() == temp.getMonth() 他们两也相当与 String == String ,两个字符串再做 == 比较,因为== 它是比较的是对象的地址值相等,  如果两个字符串相等那他们地址值也相等。我这样理解可以吗


正在回答 回答被采纳积分+1

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

1回答
提问者 jia_蛙 2019-07-31 12:17:15

我搞错了  this.getMonth() == temp.getMonth()他们相当于  int 与 int 之间做比较,== 再java中比较的是地址值是否相同,因为对于基本数据类型来说,当值相同的时候,地址值也是相同的。

假设this.getMonth()的值等于 2 ,当temp.getMonth()也等于2的时候,jvm会先去栈里找是不是已经有一个数据为2的地址,如果没有就新建一个地址,如果有就吧temp.getMonth()指向这个地址。请问我这样理解正确吗?

  • 同学你好,理解是正确的呐!1、getMonth()的值是int类型的基本类型的数据,所以使用==就可以比较了。2、基本类型都是存在栈里面的,比如int a=3;当你int b=3的时候,jvm会干嘛呢?首先,它会去栈里面找是不是已经有一个数据为3了。如果不是的话新建一个地址,是的话,就把b指向这个地址,所以对于基本类型来说,当值相同的时候,地址也是相同的! 综上所述,同学的理解是正确的呐,继续加油! 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-07-31 14:24:42
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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