为了账号安全,请及时绑定邮箱和手机立即绑定

为什么比较名字时不能用==,要用equals?

为什么比较名字时不能用==,要用equals?

正在回答

5 回答

在基本类型中,“==”比较的是两者的值

在引用类型中,“==”比较的是两者的内存地址,及是否为同一个对象

equals比较两者的内存地址,及是否同一个对象,但在String类中自动重写,比较是两者的值是否相等

如果此处用“==”,比较的是内存地址,用equals比较的是两者的值,因此用equals

0 回复 有任何疑惑可以回复我~

String类型中的equals方法是重写过的,并不是直接比对地址是否相同。

name为String类型,比较的时候自然需要使用equals,而“==”比对的话,String类型会有很多情况是无法正常比对的,因为“==”比对的是地址,而String类型的产生和赋值都有可能内容一致,但是为不同的对象。

0 回复 有任何疑惑可以回复我~

java中的==和equals

对于基本数据类型==号只是比较值是否相同(因为基本数据类型都有自己的内存,不可能相等)

对于引用类型,==比较的是两个指向的虚地址是不是相同(在堆中的位置)

Equals在没有重写的前提下也是比较内存地址

String和Integer类中,因为重写了Equals,所以比较的是值

实际中可以自己重写equals方法来比较值


2 回复 有任何疑惑可以回复我~

比较String类型的内容用equals,比较String类型的引用地址用==,除此之外没有重写的equals都是比较地址的,比较字符串是用equals 因为String类型的数据在栈中存放的是引用地址,string比较特殊,它内部处理不一样

1 回复 有任何疑惑可以回复我~

“”==“”  比较的是地址是否相同,equals比较的是内容是否相同。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么比较名字时不能用==,要用equals?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信