黑马程序员技术交流社区

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

作者: lanzy1989    时间: 2014-9-18 21:16
标题: ==与equals的区别
==与equals有啥区别???详细的

作者: ooEye    时间: 2014-9-19 00:27
好多人问过这问题,你可以百度一下,有博客说的很完整的
作者: Apologize丶    时间: 2014-9-19 09:06
我就知道equals继承==
==比较内存地址值,就知道这些了
作者: new999    时间: 2014-9-19 09:10
String类改写了equals,比较其字符串的内容
作者: 残羹夜宴丶    时间: 2014-9-19 19:15
冒个泡、 具体区别说不来,慢慢就懂了。
作者: 残羹夜宴丶    时间: 2014-9-19 19:16
冒个泡、 具体区别说不来,慢慢就懂了。
作者: 谢建平    时间: 2014-9-20 05:24
== 比较地址  equals  仅仅只是一个方法    在Objetc 是直接用了==       我们基本上会重写Object 的equals方法
作者: yueyazhishang    时间: 2014-9-20 08:52
而==比较的内存地址,对于基本数据类型是不需要new 出来的,所以当基本类型数据相等时用==返回的是true。
对应引用型数据,例如String、Integer等等都继承自Object,在Object中equals比较的也是内存地址,但是其子类一般会重写equals方法,这时比较的是对象本身的值而不是内存地址,所以当对象的值相同时返回true,
例如
  1. String s1="abc";
  2. String s2="abc";
  3. s1.equals(s2)
  4. 返回true
  5. s1==s2返回false
复制代码

当非基本数据类型通过new产生时其内存地址是不同的,所以当时用==自然返回了false

作者: 李国荧    时间: 2014-9-21 20:37
呵呵……
作者: 卧龙小    时间: 2014-9-22 00:22
如果比较的是普通变量,==操作比较的是变量的值是否相等,如果是引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。




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