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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hg3093483 中级黑马   /  2013-3-20 18:42  /  2247 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄玉昆 于 2013-3-20 19:20 编辑

请问,"=="和equals方法究竟有什么区别?区别在哪?

7 个回复

倒序浏览
建议你在论坛搜索下,这个问题是有答案的~~
回复 使用道具 举报
一、"=="是比较运算符。如果它两边是的数据类型是基本数据类型的话,她判断的是两边的值是否相等。如果"=="两边是引用数据类型的话,那么他判断的是两边的地址值是否相同,在这种情况下,只有两边的引用类型指向同一个内存地址时,才返回真,否则返回假。
二、由于Object类中存在equals方法,所以任何一个对象中也都有一个equals方法。Object类中的equals方法是比较的是两个对象的地址值是否相同,来决定返回真假。但是,由于继承的出现,子类感觉父类中某些方法不能满足当前的需求,将会复写父类中的方法。所以在一些类中,会复写Object 类中的equals方法,建立自己特有的比较方式(那么这时的equals方法不再是比较地址值了.),例如在String类中的equals被复写为比较两个字符串的内容是否相同。
回复 使用道具 举报
(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
(2)对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其
对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
注意:
(1)如果是基本类型比较,那么只能用==来比较,不能用equals
(2)对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,
     ==是比较地址的,而equals是比较内容的。
回复 使用道具 举报
这个问题已经有三个人问过了{:soso_e102:}
回复 使用道具 举报
==可以用于基本类型和引用类型,当用于基本类型的时候,是比较值是否相同,当用与引用类型的时候,是比较对象是否相同(就是地址值)。但是基本类型没有用equals方法,equals除了比较对象的内存地址值,还可以自已覆盖比较对象里的内容呢
回复 使用道具 举报
==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。
基本类型没有equals方法,equals只比较值(对象中的内容)是否相同
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马