黑马程序员技术交流社区

标题: “==”和“equals" 到底有什么区别 [打印本页]

作者: 简一    时间: 2014-8-2 20:46
标题: “==”和“equals" 到底有什么区别
本帖最后由 简一 于 2014-8-2 23:29 编辑

“==”和“equals"  到底有什么区别  
什么时候适合使用”==“
什么时候适合使用”equals“
求高手解答一下  最好有个例子,谢谢了。

作者: vaqh    时间: 2014-8-2 20:55
==判断的是两个对象是否相等,或者两个基本数据类型是否相等,其实比较的是它们在内存中的地址。而equals方法是定义在Object中的方法,在Object中它也是比较的对象的地址,但是,由于在其他有的类中对其进行了复写、所以他就具备了特殊的比较方式,比如String中,比较的就是两个字符串的值是不是相同,而不是比较是不是同一个字符串,对于其具体使用方法得看是什么类的对象和具体使用的情况来定。
作者: 简一    时间: 2014-8-2 20:58
vaqh 发表于 2014-8-2 20:55
==判断的是两个对象是否相等,或者两个基本数据类型是否相等,其实比较的是它们在内存中的地址。而equals方 ...

和常量池有关么 ?
作者: vaqh    时间: 2014-8-2 21:00
简一 发表于 2014-8-2 20:58
和常量池有关么 ?

常量池中存放的是字符串,,,他们之间没有必然联系
作者: 简一    时间: 2014-8-2 21:02
vaqh 发表于 2014-8-2 21:00
常量池中存放的是字符串,,,他们之间没有必然联系

哦哦 好的 谢谢啊  我研究研究
作者: TanZhiPeng1991    时间: 2014-8-2 21:03
==比较的是对象的应用,equals比较是对象的内容
作者: 草鱼狂飙    时间: 2014-8-2 21:03
关于字符串的比较。对于字符串的比较来说,不要使用==来比较,使用equals方法。equals方法定义在Object类中,在Object中,equals方法比较的依然是引用的地址是否一致,换句话说,比较两个引用是否指向了同一个对象,也就是说,Object类中的equals方法等价于==。
因为Java中所有的类都直接或间接地继承自Object类,所以每个类都有equals方法。但通常,每个类都会重写equals方法,使得equals方法的意义变为判断两个对象的内容是否一致。

作者: liqi    时间: 2014-8-2 21:20
== 是比较对象是否相等,equals()方法,最开始的作用是比较对象地址是否相同,是Object类中的方法, 这个类的许多子类覆盖了这个方法,如:String,包装类等等。覆盖的equals(),和==的作用一样,比较对象是否相同




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2