java比较两个对象_java判断两个对象是否相等的方法
java判断两个对象是否相等的方法
发布时间:2020-06-25 13:48:38
来源:亿速云
阅读:197
作者:Leah
这期内容当中小编将会给大家带来有关java判断两个对象是否相等的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
java中可以使用equals()方法判断两个对象是否相等,equals() 方法用于将字符串与指定的对象比较。如果给定对象与字符串相等,则返回 true;否则返回 false。
该方法的源码如下:public boolean equals(Object obj) {
return (this == obj);
}
所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址,所以说使用Object的equals()方法是比较两个对象的内存地址是否相等,即若object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。
虽然有时候Object的equals()方法可以满足我们一些基本的要求,但是我们必须要清楚我们很大部分时间都是进行两个对象的比较,这个时候Object的equals()方法就不可以了,实际上JDK中,String、Math等封装类都对equals()方法进行了重写。
下面是String的equals()方法:public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
对于这个代码段:if (v1[i++] != v2[j++])return false;我们可以非常清晰的看到String的equals()方法是进行内容比较,而不是引用比较。至于其他的封装类都差不多。
在Java规范中,它对equals()方法的使用必须要遵循如下几个规则:
equals 方法在非空对象引用上实现相等关系:
1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
5、 对于任何非空引用值 x,x.equals(null) 都应返回 false。
对于上面几个规则,我们在使用的过程中最好遵守,否则会出现意想不到的错误。
在java中进行比较,我们需要根据比较的类型来选择合适的比较方式:
1) 对象域,使用equals方法 。
2) 类型安全的枚举,使用equals或== 。
3) 可能为null的对象域 : 使用 == 和 equals 。
4) 数组域 : 使用 Arrays.equals 。
5) 除float和double外的原始数据类型 : 使用 == 。
6) float类型: 使用Float.foatToIntBits转换成int类型,然后使用==。
7) double类型: 使用Double.doubleToLongBit转换成long类型,然后使用==。
上述就是小编为大家分享的java判断两个对象是否相等的方法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
java比较两个对象_java判断两个对象是否相等的方法相关推荐
- java判断list相等_java 判断两个list是否相等
/** * 队列比较 * @param * @param a * @param b * @return */ public static > boolean compare(List a, Li ...
- java比较两个list是否相同_Java判断两个List是否相同
1.利用Java中为List提供的方法retainAll() /** * 判断两个List内的元素是否相同 * * 此方法有bug 见Food.class * * @param list1 * @pa ...
- java判断总共天数_java判断两个时间相差得天数
方法一:通过Calendar类得日期比较,在这需要考虑闰年和平年,也要考虑跨年份 /** * date2比date1多的天数 * @param date1 * @param date2 * @retu ...
- java判断两个int相等_Java 判断两个变量是否相等
判断两个变量是否相等的方式有两种:利用运算符 == 利用equals方法 (1)比较基本Java基本数据类型 比较基本数据类型,只能用"==",不能用equals,这里比较的是两个 ...
- java判断总共天数_Java判断两个日期相差天数的方法
本文实例讲述了Java判断两个日期相差天数的方法.分享给大家供大家参考.具体如下: import java.util.Calendar; public class DateDifferent{ pub ...
- java 判断日期是同一天_java判断两个日期是否同一天的方法
java判断两个日期是否同一天的方法: 1.使用Calendar来实现Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar. ...
- java 时间段重叠_java 判断两个时间段是否重叠的案例
java 判断两个时间段是否重叠的案例 发布时间:2020-10-21 16:08:51 来源:脚本之家 阅读:108 作者:SakuyaM 最近业务上遇到需要判断两个时间段是否存在重叠的情况,网上找 ...
- java里怎么判断时间重合_java 判断两个时间段是否重叠的案例
最近业务上遇到需要判断两个时间段是否存在重叠的情况,网上找了不少代码.大佬们的思路过于简洁了,有些理解不了.还只是个菜鸟码农,还是多锻炼锻炼自己的思路. 思路很简单:定义一个时间段的概念,既然是时间段 ...
- java判断总共天数_java 判断两个时间相差的天数
1.实现目标 输入:两个日期 输出:两个日期相差的天数 2.代码实现 方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份 ...
最新文章
- 计算机常见知识获取方法,计算机信息处理技术基础知识
- 带你学python基础:面向对象编程
- PyQt5 笔记6 -- 对话框(QDialog)
- Unity内实现Android APK版本更新
- 通信调制体制设计之64QAM性能分析MATLAB仿真及代码
- Spark中导入scalax
- Spring 整合Mybatis Mapper动态代理方法
- 复杂的指针获取字符串里的内容放入数组
- MySQL 对 CREATE TABLE IF NOT EXISTS SELECT 的处理
- CSS3实现八方向云台控制器器样式
- 关于超定方程组的解算方法
- 关于 Android Studio 鼠标中键的一些技巧
- 已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值
- java实现远程控制
- 机械革命蛟龙16K和蛟龙16区别
- Java一维数组和二维数组的长度
- Python语言—爬虫之旅
- kaggle 2018 data science bowl 细胞核分割学习笔记
- 好看的渐变色网址收藏
- 关于jquery定时器设置问题 ios定时器无法响应问题 ios 时间显示为NaN问题 优惠时间倒计时
热门文章
- 宝塔面板修改默认的放行端口8888为8001并且生效
- 使用EndNote在Word中插入参考文献的格式设置
- 2021-05-02 收心继续
- We‘re sorry but XXX doesn‘t work properly without JavaScript enabled.
- Coremail2022Q4邮件安全报告:暴力破解骤降,盗号问题有所缓解?
- 软件测试需要学什么课程?好学吗?
- 我是如何设计一个包办所有对企政策的城市平台
- 让我们愉快的切割吧 - 4:如何在无特定间隔符下拆分字母和数字
- 界面原型设计工具开源软件
- 启动期间的内存管理之初始化过程概述----Linux内存管理(九)