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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘_鑫 中级黑马   /  2013-6-26 22:45  /  1505 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于equals与==的区别:
1) 如果是基本类型比较,那么只能用==来比较,不能用equals
2) 对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。

以上是我的理解,虽然很基础,不过我觉得有一点小复杂,欢迎大家发表自己的看法。

9 个回复

倒序浏览
这个知识点好多帖子啊  这个相关帖 随便点一个都是。。。
回复 使用道具 举报
斑竹 我才学了26天java 我想高深也高深不起来啊
回复 使用道具 举报
==比较的是值(基本数据类型)、地址(对象引用)

equals:对于String比较的是 "内容" , 其他比较的是是否是同一个引用(内存地址)

instanceof是判断是否是某类,如 Person p...   p instanceof Person
回复 使用道具 举报

都是比较相等的操作。
区别:
==:   可以用于比较对象,也可以用于比较基本数据类型
       如果用于比较基本数据类型,它比较的是值。
       如果用于比较对象,它比较的是引用(地址)
equals:是object类的一个方法,只能用于比较对象。
       如果比较对象是object类,那么它比较的是引用。
       如果比较的是String,Integer等这些系统类的话,由于这些类已经重写了equals()方法,它比较的是值。
       如果比较自定义类的话,由于它是继承object类,所以比较的是引用。
       但如果我们想比较值的话,我们可以重写equals()方法。
回复 使用道具 举报 1 0
完全正确!!
回复 使用道具 举报
equals是object类的一个方法,而object是所有类的基类,所以对于对象如果没有重写equals还是一样的比较地址
回复 使用道具 举报
==是比较引用是否指向相同的。 equals是Object中的方法。也就是每个类都会继承这个方法,每个类都可以复写这个方法,并做出不同的定义。
回复 使用道具 举报
韩冬 中级黑马 2013-6-28 11:48:30
9#
关于 ==  和 equals  的用法
A.== 表示判断两边的数值是否相等
Equals 表示判断两边的字符串是否相等
B.==表示对象是否是同一个对象
Equals表示对象的地址是否指向的是同一个对象的地址
回复 使用道具 举报
对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。

“==”比较两个变量本身的值,即两个对象在内存中的首地址。

“equals()”比较字符串中所包含的内容是否相同。

但是有一点值得注意的是,String str1="abc"; Strng str2="abc";

str1和str2是两个字符串常量所生成的变量,其中所存放的内存地址是相等的。

所以str1==str2是true;

而对于非字符串变量来说,“==”和“equals”方法的作用是相同的都是用来比较其对象在堆内存的首地

址,即用来比较两个引用变量是否指向同一个对象。

Object 类的 equals() 方法的比较规则为:当参数 obj 引用的对象与当前对象为同一个对象时,就返回

true,否则返回false

在JDK中有一些类覆盖了 Object 类的equals()方法,它们的比较规则为:

如果两个对象的类型一致,并且内容一致,则返回true。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马