黑马程序员技术交流社区

标题: 关于equals与==的区别 [打印本页]

作者: 刘_鑫    时间: 2013-6-26 22:45
标题: 关于equals与==的区别
关于equals与==的区别:
1) 如果是基本类型比较,那么只能用==来比较,不能用equals
2) 对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。

以上是我的理解,虽然很基础,不过我觉得有一点小复杂,欢迎大家发表自己的看法。
作者: 刘凯    时间: 2013-6-26 22:46
这个知识点好多帖子啊  这个相关帖 随便点一个都是。。。
作者: 刘_鑫    时间: 2013-6-26 23:03
斑竹 我才学了26天java 我想高深也高深不起来啊
作者: 王瀛    时间: 2013-6-26 23:09
==比较的是值(基本数据类型)、地址(对象引用)

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

instanceof是判断是否是某类,如 Person p...   p instanceof Person
作者: 里刀刀    时间: 2013-6-27 09:27

都是比较相等的操作。
区别:
==:   可以用于比较对象,也可以用于比较基本数据类型
       如果用于比较基本数据类型,它比较的是值。
       如果用于比较对象,它比较的是引用(地址)
equals:是object类的一个方法,只能用于比较对象。
       如果比较对象是object类,那么它比较的是引用。
       如果比较的是String,Integer等这些系统类的话,由于这些类已经重写了equals()方法,它比较的是值。
       如果比较自定义类的话,由于它是继承object类,所以比较的是引用。
       但如果我们想比较值的话,我们可以重写equals()方法。
作者: 郭伟杰    时间: 2013-6-27 09:59
完全正确!!
作者: lkjghvcx@163.co    时间: 2013-6-27 10:34
equals是object类的一个方法,而object是所有类的基类,所以对于对象如果没有重写equals还是一样的比较地址
作者: 王靖远    时间: 2013-6-27 11:40
==是比较引用是否指向相同的。 equals是Object中的方法。也就是每个类都会继承这个方法,每个类都可以复写这个方法,并做出不同的定义。
作者: 韩冬    时间: 2013-6-28 11:48
关于 ==  和 equals  的用法
A.== 表示判断两边的数值是否相等
Equals 表示判断两边的字符串是否相等
B.==表示对象是否是同一个对象
Equals表示对象的地址是否指向的是同一个对象的地址

作者: gzbbxu    时间: 2013-6-28 12:05
对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。

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

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

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

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

所以str1==str2是true;

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

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

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

true,否则返回false

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

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






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