黑马程序员技术交流社区

标题: ==和equals有什么区别 [打印本页]

作者: Ruby    时间: 2015-7-6 20:29
标题: ==和equals有什么区别
求大神解答
作者: Love丶cd    时间: 2015-7-6 21:13
你应该知道,在对象初始化的时候都会分配内存空间。内存空间不同,自然==和equals返回的值就不一样。
作者: 赵龙    时间: 2015-7-6 22:32
==  注重的是 值的比较
equals 注重的是内容的比较
作者: palysh    时间: 2015-7-6 22:35
==比较的是对象在内存中的地址是否相同,即使对象相等但在内存中的地址不等返回还是false;equals比较的是对象本身是否相等
作者: 夜写意    时间: 2015-7-6 22:48
==比较的是栈内存内的内容,equals比较的是堆内存内的内容。
作者: 惜爱上缘    时间: 2015-7-6 23:01
"==" 可以说是比较的是两个变量的内存地址
"equals"比较的是两个两个变量地址中的内容
作者: 东东的一些事    时间: 2015-7-6 23:37
equals 默认是比较地址值,但一般都重写该方法才有意义。
作者: wgy    时间: 2015-7-7 08:01
==和equals()的区别?

                ==:
                        比较基本类型:比较的是基本类型的值是否相同。
                        比较引用类型:比较的是引用类型的地址值是否相同。

                equals():
                        比较引用类型,默认比较的是引用类型的地址值是否相同。
                        如果类重写了该方法,那就得按照重写后的规则进行比较。
作者: 云雀    时间: 2015-7-7 08:26
我也来看一下
作者: wing-SF    时间: 2015-7-7 08:41
==一般用来比较俩端的值是否相同,equals的话,也有这样的作用,但是equals更多的情况是会被重写的,用来比较想让得到的结果
作者: zhwfa1991    时间: 2015-7-7 08:50
基本数据类型之间比较应该用==,比较的是它们之间值是否相等
equal是Object类中的一个方法,这个方法初始是比较内存地址是否相等,但是在一些类库当中,这个方法被覆盖了,所以在没有覆写这个方法的时候比较的还是内存地址
作者: 等你的季节-夏天    时间: 2015-7-7 09:08

   根本上的区别,equsle是方法, == 是比较运算符;

   equsle方默认比较的是对象的地址;
   重写equsle方法,比较对象中的成员变量值;

   == 两边是基本数据类型,比较的是具体的数值;
   == 两边是引用数据类型,比较的是对象的地址;
作者: 路途    时间: 2015-7-7 09:17
上面说的都对。。。。不过只要记得比较数字是用 ==其他尽量不用就好吧.........




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