黑马程序员技术交流社区

标题: 深究equals和==的真正区别? [打印本页]

作者: weidong10heima    时间: 2016-7-6 18:05
标题: 深究equals和==的真正区别?
深究equals和==的真正区别?
作者: syinys7    时间: 2016-7-6 22:00
equals 是顶级父类Object类的成员方法,用于比较两个对象是否"相等",默认情况下比较的是对象的引用是否相同,
由于比较对象的引用没有意义,一般建议重写该方法,重写equals方法可以比较两个对象的属性值,
而==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
比如说
String s1="a";
String s2="a";
boolean b = s1.equals(s2);
System.out.println(s1 == s2);//比较的是地址值,两个对象的地址引用不一样,false
System.out.println(b);        //String类重写了equals方法,比较两个对象的内容,都是"a",是一样的,结果为true
作者: sgnx    时间: 2016-7-6 22:11
equals是object类中的方法,在object中它的底层是用的==,比较的是两个对象的地址是否相同,而==是一个比较运算符,比较的是内存地址。而一般在定义类的时候,我们会根据需求重写equals方法来满足需求,比如String类
作者: scz63    时间: 2016-7-6 23:06
来看看,还没学到这,当先预习了
作者: Insomnia!    时间: 2016-7-6 23:20
1楼 总结的挺好
作者: 迅雷    时间: 2016-7-6 23:22
1楼已经回答的挺好了
作者: syso信任    时间: 2016-7-7 09:15
简单说就是equals比较的是两个的值是否相等
==比较的是两个地址值是否相同.
相等的值可能有多地址.
相同地址只能有一个值




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