黑马程序员技术交流社区

标题: equals和“==”的区别究竟是什么? [打印本页]

作者: 张慈瑞    时间: 2014-7-11 11:32
标题: equals和“==”的区别究竟是什么?
尽量能给出比较详细的解释,好像在不同的用法中他们的区别也是不同的。
作者: 001可望成功    时间: 2014-7-11 11:41
像我们用的最多的就是在String里,equals比较的是值,==比较的是引用
而像我们自己定义的类直接使用equals时,比较的也是引用,这是equals和==一样,因为这时自定义类直接继承的是Object里的equals方法,为什么String里比较的是值呢,因为String类把equals覆写了
作者: 非5莫属    时间: 2014-7-11 11:51
equals是基于== 的
作者: Beka    时间: 2014-7-11 12:16
equals比较的是对象的内容,==比较的是对象的地址。
作者: Ying0558    时间: 2014-7-11 12:40
equals比较的是对象中某一个成员的值,而 ==比较的是对象地址   一般自定义类都是通过重写equals来进行比较
作者: 钟翠翠    时间: 2014-7-11 13:13
http://bbs.itheima.com/thread-118011-2-1.html?lt3448看看这个总结
作者: 刘一博    时间: 2014-7-11 13:37
equals方法在object中定义,用与比较两个对象是否相同,a和b是否指向了同一个对象。
==与equals相同
与==不同的是所有类都可以复写equals方法,比如String就重写了equals方法,只比较两个字符串的值是否相同
作者: 渴望学习    时间: 2014-7-11 15:18
路过!!!!!!!!!!!!!!!
作者: 54lier    时间: 2014-7-11 15:33
「==」是用于判断两个基本数据类型的值是否相等和判断两个对象的引用是否相同
「equals」是Object的一个方法,主要是判断两个对象的值是否相等,如果需要使用equals方法比较两个对象是否相等我们需要实现对象的 hashcode和equals方法,否则比较结果可能不准确。

还有就是如果我们在集合里面使用contains方法或者remove方法的时候,都会调用hashcode和equals方法
作者: 小洁呵呵    时间: 2014-7-11 16:24
==比较的是两个对象的内存地址(也就是看是不是同一个对象)比如:Student stu1=new Student();Student stu2=stu1;stu1==stu2就是true,3==3也是true,因为3是存在数据区的只有一个地址。Object中的equals方法比较的也是内存地址(也就是是不是同一个对象),String中的equals方法比较的是两个String对象的内容是不是相同,最后经典语录:i  see i  forget,i  write  i  rember,i  do  i  understand
作者: ╰_〃无法释怀的    时间: 2014-7-11 16:26
整形==号字符串用equals
作者: 西地那非    时间: 2014-7-11 16:54
一般==比较的是引用,也地址值是否相同,equals是重写父类的方法,默认也是比较地址值,重写后,按照你重写的比价方法判断
作者: 南柯一梦    时间: 2014-7-11 17:23
==可用来比较基本数据类型和比较引用数据类型对象的地址是否相同,而String类equals比较字符串内容是否一样,其它对象默认比较地址是否相同




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