课程
/后端开发
/Java
/Java入门第三季
为什么比较名字时不能用==,要用equals?
2018-03-27
源自:Java入门第三季 6-1
正在回答
在基本类型中,“==”比较的是两者的值
在引用类型中,“==”比较的是两者的内存地址,及是否为同一个对象
equals比较两者的内存地址,及是否同一个对象,但在String类中自动重写,比较是两者的值是否相等
如果此处用“==”,比较的是内存地址,用equals比较的是两者的值,因此用equals
String类型中的equals方法是重写过的,并不是直接比对地址是否相同。
name为String类型,比较的时候自然需要使用equals,而“==”比对的话,String类型会有很多情况是无法正常比对的,因为“==”比对的是地址,而String类型的产生和赋值都有可能内容一致,但是为不同的对象。
java中的==和equals
对于基本数据类型==号只是比较值是否相同(因为基本数据类型都有自己的内存,不可能相等)
对于引用类型,==比较的是两个指向的虚地址是不是相同(在堆中的位置)
Equals在没有重写的前提下也是比较内存地址
String和Integer类中,因为重写了Equals,所以比较的是值
实际中可以自己重写equals方法来比较值
比较String类型的内容用equals,比较String类型的引用地址用==,除此之外没有重写的equals都是比较地址的,比较字符串是用equals 因为String类型的数据在栈中存放的是引用地址,string比较特殊,它内部处理不一样
“”==“” 比较的是地址是否相同,equals比较的是内容是否相同。
举报
Java中你必须懂得常用技能,不容错过的精彩,快来加入吧
5 回答为什么用equals比较是false
4 回答为什么老师重写的equals方法中name需要用equals()进行比较而不用==?
5 回答为什么这里不能用==比较
4 回答course2用equals比较为什么出来的是false?
1 回答6-1老师说为什么name需要用equals()进行比较