A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 简一 中级黑马   /  2014-8-2 20:46  /  1406 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 简一 于 2014-8-2 23:29 编辑

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

7 个回复

正序浏览
liqi 中级黑马 2014-8-2 21:20:31
8#
== 是比较对象是否相等,equals()方法,最开始的作用是比较对象地址是否相同,是Object类中的方法, 这个类的许多子类覆盖了这个方法,如:String,包装类等等。覆盖的equals(),和==的作用一样,比较对象是否相同
回复 使用道具 举报
关于字符串的比较。对于字符串的比较来说,不要使用==来比较,使用equals方法。equals方法定义在Object类中,在Object中,equals方法比较的依然是引用的地址是否一致,换句话说,比较两个引用是否指向了同一个对象,也就是说,Object类中的equals方法等价于==。
因为Java中所有的类都直接或间接地继承自Object类,所以每个类都有equals方法。但通常,每个类都会重写equals方法,使得equals方法的意义变为判断两个对象的内容是否一致。
回复 使用道具 举报
==比较的是对象的应用,equals比较是对象的内容
回复 使用道具 举报
vaqh 发表于 2014-8-2 21:00
常量池中存放的是字符串,,,他们之间没有必然联系

哦哦 好的 谢谢啊  我研究研究
回复 使用道具 举报
简一 发表于 2014-8-2 20:58
和常量池有关么 ?

常量池中存放的是字符串,,,他们之间没有必然联系
回复 使用道具 举报
vaqh 发表于 2014-8-2 20:55
==判断的是两个对象是否相等,或者两个基本数据类型是否相等,其实比较的是它们在内存中的地址。而equals方 ...

和常量池有关么 ?
回复 使用道具 举报
==判断的是两个对象是否相等,或者两个基本数据类型是否相等,其实比较的是它们在内存中的地址。而equals方法是定义在Object中的方法,在Object中它也是比较的对象的地址,但是,由于在其他有的类中对其进行了复写、所以他就具备了特殊的比较方式,比如String中,比较的就是两个字符串的值是不是相同,而不是比较是不是同一个字符串,对于其具体使用方法得看是什么类的对象和具体使用的情况来定。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马