黑马程序员技术交流社区

标题: 关于== 和 equals的区别 [打印本页]

作者: 李婷婷123    时间: 2016-3-20 13:03
标题: 关于== 和 equals的区别
集合中的== 和 equals 什么区别呀,好晕呀!
作者: lgdbest    时间: 2016-3-20 18:26
1、==既能比较基本数据类型,也能比较引用数据类型,equals只能比较引用数据类型。
作者: lgdbest    时间: 2016-3-20 18:28
2、==在比较引用数据类型的时候是比较两个引用是不是指向同一个内存地址,equals比较的是两个引用的字面值是不是相同。
作者: ameanboy    时间: 2016-3-20 18:44
另外自定义类可以重写equals方法,让对象按照自己指定的方式来比较大小;但是java中,基本运算符不能重写(以前学c++,连基本运算符都能重载)
作者: 喧闹的世界    时间: 2016-3-20 18:49
区别很大,一般来说能用equels比较的,千万别用==就对了。
作者: jeremylee    时间: 2016-3-20 20:25
还没有学到 但是每天看看你们的介绍会让我有更深的印象
作者: 李婷婷123    时间: 2016-3-29 09:44
lgdbest 发表于 2016-3-20 18:28
2、==在比较引用数据类型的时候是比较两个引用是不是指向同一个内存地址,equals比较的是两个引用的字面值是 ...

比较引用对象的时候要重写equals方法的对吧。
作者: everyuda520    时间: 2016-3-29 11:27
自定义类想要用equals就重写它,java提供的类基本都已经重写equals。
作者: lgdbest    时间: 2016-3-29 12:12
李婷婷123 发表于 2016-3-29 09:44
比较引用对象的时候要重写equals方法的对吧。

嗯  是的
作者: ipursue    时间: 2016-3-29 12:16
==比较的是地址值和值,equals默认调用==不方法,但只能用于引用数据类型。
作者: 坚持到底    时间: 2016-3-29 12:40
equals比较内容,==比较地址
作者: skxy2016    时间: 2016-3-29 16:18
1,==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,
2,equal用于比较两个对象的值是否相同【不是比地址】
3,【特别注意】Object类中的equals方法和“==”是一样的,没有区别,
  而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,
  所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。
  "=="比"equal"运行速度快,因为"=="只是比较值或地址,不比较对象内容.
作者: 蔡恒    时间: 2016-3-29 18:48
有用!!!
作者: daniua    时间: 2016-3-29 20:04
一个是所有的比较,一个只是比较里面的值
作者: zapple926    时间: 2016-3-31 00:13
==号如果比较的是基本数据类型,比较的是值。引用类型比较的是地址值。
equals 比较引用数据类型的对象内容
作者: yangyoupeng    时间: 2016-3-31 00:39
1、==既能比较基本数据类型,也能比较引用数据类型,equals只能比较引用数据类型。




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