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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭娇珍 中级黑马   /  2012-12-28 20:14  /  2039 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭娇珍 于 2012-12-29 18:12 编辑

==和equals() 有何区别

评分

参与人数 1黑马币 +1 收起 理由
刘芮铭 + 1

查看全部评分

7 个回复

倒序浏览
==比较的是值,如果是基本数据类型那就不用说了,直接比他们的值,如果是引用类型的话,比的也是值,不过是地址值。
equals则不同,在Object类中,默认是使用“==”,但这没什么意义,我们需要比的是对象,所以一般很多类都会重写这个方法,比如我们用的多的String类就重写了,自定义类如果需要比较的话,很多也会重写这个方法。至于怎么比,比什么,就看你的需求了。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同,值得注意的是String类的equals复写了object的equals方法,比较的也是两个字符串是否相同。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
== 实际上是比较的两个字符串的物理内存地址而equals 比较两个对象的值(如果默认继承自 OBJECT ,则 equals 比较两个对象地址), String class override 了 Object class 的 equals 方法,实现了自己的方法,所以 equals 比较的是实际值而非地址

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
李敬卫 来自手机 中级黑马 2012-12-28 23:01:00
报纸
记着:对于基本类型,==比较的是值是否相等,对于引用类型,==比较的是对象的引用所指向的地址是否相同,而equals则是比较的地址的内容是否相同。这是我的学习后的总结。记着这三点以后就不会出错了

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
针对不同情况,对于基本类型,用==比较值是否相等;

对于引用类型,用==比较地址值是否相等,用equals比较内容是否相同;

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 郭娇珍 于 2012-12-29 18:20 编辑

{:soso_e189:}
问题已经解决
回复 使用道具 举报
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。  
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马