黑马程序员技术交流社区

标题: 关于equal和==在对象比较时,一般情况下和装箱情况下,怎... [打印本页]

作者: 陈文杰    时间: 2013-11-17 01:00
标题: 关于equal和==在对象比较时,一般情况下和装箱情况下,怎...
求指教,新学员纠结在这里
作者: hubby    时间: 2013-11-17 08:43
==是看引用是否相同,而equals你可以参见api中的equals方法是这么写的:
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
貌似跟==差不多,但是如果你的对象是字符串就不一样了,因为String类中重写了equals方法,这个方法的equals就不是看引用了,而是看内容是否相同即:
String a=new String("abc"); String b=new String("abc");
那么a==b将返回false,因为a和b指向不同的对象。
但是他们内容相同,这时候用equals方法比就是true。

楼主跟我一样,刚开始不知道==和equals方法。只要弄明白你创建的对象类型里面有没有复写equals方法,如果复写了就跟==性质不一样了。。。但是==始终是比较引用。。
作者: 陈文杰    时间: 2013-11-17 12:35
谢谢学长指导,一般情况下这样判断,在装箱和拆箱情况下的比较只要注意其特殊的范围么,在视频中inteager和int那种么
作者: hubby    时间: 2013-11-21 08:46
天地良心,这个可是我一边看api一边总结的啊。。去哪能找到这么心细的山寨。。




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