关于==和equals的探索
在我的概念之中,==在对比两个基本数据类型的时候,对比的是两者的值是否相同。而在对比两个引用数据类型的时候,比较的是两者的内存地址是否相同。
而equals方法,我一直认为这个方法是对比两个引用数据类型的值是否相同的。
但是,今天看到有人说,equals想要比较两个引用数据类型的内容是否一致,需要重写。因为Object的equals方法是比较地址是否一致的。
然后我就疑惑了,以前好像也没重写就可以比较呀,是我记错了么?
于是,我决定详细探究一下equals方法。
Integer s=new Integer(2); Integer s1=new Integer(2); System.out.println(s==s1); System.out.println(s.equals(s1));
可以看到,s和s1是两个对象,内存地址不同,而内容是相同的。
返回结果为:
false
true
那么问题来了,我没有对equals方法进行重写,那么返回值不应该是两个false么?
于是,我看了一下Integer的equals底层代码
public boolean equals(Object obj) {if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}return false;}
又查看了一下Object的底层代码
public boolean equals(Object obj) {return (this == obj);}
可以看到在Object中,equals的确是用于对比内存地址是否一致的,而在Integer中,这个方法已经被重写为对比内容是否一致。
转载于:https://www.cnblogs.com/wxdmw/p/11011729.html
关于==和equals的探索相关推荐
- 深入探索.NET内部了解CLR如何创建运行时对象
前言 SystemDomain, SharedDomain, and DefaultDomain. 对象布局和内存细节. 方法表布局. 方法分派(Method dispatching). 因为公共语言 ...
- 探索 ConcurrentHashMap 高并发性的实现机制
简介 ConcurrentHashMap 是 util.concurrent 包的重要成员.本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体 ...
- java 为什么重写equals一定要重写hashcode?
前言 最近复习,又看到了这个问题,在此记录和整理,通过例子来说明这种情况的原因,使大家可以清晰明白这个问题. 初步探索 首先我们要了解equals方法是什么,hashcode方法是什么. equals ...
- JAVA8常量池监控_深入探索Java常量池
Java的常量池通常分为两种:静态常量池和运行时常量池 静态常量池:class文件中的常量池,class文件中的常量池包括了字符串(数字)字面值,类和方法的信息,占用了class文件的大部分空间. 运 ...
- [转载]深入探索.NET框架内部了解CLR如何创建运行时对象
深入探索.NET框架内部了解CLR如何创建运行时对象 发布日期: 9/19/2005 | 更新日期: 9/19/2005 Hanu Kommalapati Tom Christian 本文讨论: • ...
- 深入探索 Java 热部署--转
在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.本文将探索如何在不破 ...
- 探索 ConcurrentHashMap 高并发性的实现机制--转
ConcurrentHashMap 是 Java concurrent 包的重要成员.本文将结合 Java 内存模型,来分析 ConcurrentHashMap 的 JDK 源代码.通过本文,读者将了 ...
- 美团外卖商家端视频探索之旅
美团外卖商家端视频探索之旅 背景 美团外卖至今已迅猛发展了六年,随着外卖业务量级与日俱增,单一的文字和图片已无法满足商家的需求,商家迫切需要更丰富的商品描述手段吸引用户,增加流量,进而提高下单转化率和 ...
- Kotlin代码检查在美团的探索与实践
背景 Kotlin有着诸多的特性,比如空指针安全.方法扩展.支持函数式编程.丰富的语法糖等.这些特性使得Kotlin的代码比Java简洁优雅许多,提高了代码的可读性和可维护性,节省了开发时间,提高了开 ...
最新文章
- CentOS 7 yum源安装Nginx
- HTTP请求中的缓存(cache)机制
- Python 之列表的常用方法
- Java序列化简单例子
- contract forward,菜鸟请教一个问题:the difference between forward contract and future contract...
- 对计算机组装和维护课的总结,计算机组装与维护教师工作总结
- kaggle实战_3模型分析与模型融合
- 【研报分享】华为鸿蒙深度研究.pdf(附下载链接)
- 调查称谷歌占北美25%互联网流量
- sql collection内容_非关系数据库复习|SQL到mongoDB查询语句转换
- BNU 鸣人的查克拉
- nes 红白机模拟器 第4篇 linux 手柄驱动支持
- K线形态识别—多K线之买入型多日K线组合
- namecheap ssr_如何将SSL证书和自定义Namecheap域添加到GitLab Pages站点
- python中的token是什么
- 关于Document类型的总结
- 山东理工ACM[2444]正方形
- Numpy中矩阵向量乘法np.dot()及np.multiply()以及*区别
- spyder快捷键大全
- 信息熵(entropy)定义公式的简单理解