equals和==的区别,,,

求面试碰到这个问题的大神解释一下,,百度了一天,还是觉得很乱。#Java工程师#
全部评论
==是判断两个变量或实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同
3 回复 分享
发布于 2016-10-03 18:51
把hashcode方法和equals方法看下,研究下重写的情景,有兴趣的话把自动装箱也看下,应该差不多😊,加油~
2 回复 分享
发布于 2016-10-03 23:36
距离hashmap的put流程
点赞 回复 分享
发布于 2024-01-06 21:34 陕西
Object的 equal方法等价于 ==,
点赞 回复 分享
发布于 2016-10-09 01:52
建议
点赞 回复 分享
发布于 2016-10-09 01:40
==判断地址(地址相等值自然相等) equals是object的方法,也是判断地址,但是联系子类重写equals方法,你可以看一下String的equals方法,看完你就基本清楚了
点赞 回复 分享
发布于 2016-10-09 01:40
==对于基础类型来说比较的是值,对引用类型来说比较的是地址,而基础类型的值和引用类型的地址是放在栈内存中的,也可以说==比较的是变量在栈内存中值。equals是object的一个成员方法,可以去看看源码,就知道其实里面也是用的==实现的,所以我们要比较引用类型的实际的值,应该要重写equals方法。还有需要注意的就是,在java中,String,Date,integer,都是已经重写了equals方法的,所以他们比较的实际的值。
点赞 回复 分享
发布于 2016-10-04 12:08
equal没什么好说的,只要实现了这个方法,都是在比较内容。而==对非基础类型的对象来说,是在比较地址。一般new出来得对象都会在堆里开辟一个地址来存放这个对象,一般而言地址不等。有时会出现相等的情况,譬如字符串相等,是因为虚拟机进行了优化,它发现常量池中已经存在了这个对象,进行了直接引用,而不再单独开辟空间再次存储它。
点赞 回复 分享
发布于 2016-10-04 00:46
等号就是地址,equals需要重写
点赞 回复 分享
发布于 2016-10-03 19:12
==指的是两个对象地址是否一致,equals()在object类中默认实现是==,一般在子类中会覆盖,用来判断两个对象的值是否相等(比如两个string内容是否相等)。注意,equals()为TRUE的时候,两个对象hashcode()一定相等(覆盖equals时一定要覆盖hashcode())
点赞 回复 分享
发布于 2016-10-03 19:10
java必备
点赞 回复 分享
发布于 2016-10-03 18:56

相关推荐

04-27 08:59
常州大学 Java
牛客139242382号:《两门以上汇编语言》
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
04-08 05:32
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客企业服务