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判断两个对象是否相等的方法相关推荐

  1. java判断list相等_java 判断两个list是否相等

    /** * 队列比较 * @param * @param a * @param b * @return */ public static > boolean compare(List a, Li ...

  2. java比较两个list是否相同_Java判断两个List是否相同

    1.利用Java中为List提供的方法retainAll() /** * 判断两个List内的元素是否相同 * * 此方法有bug 见Food.class * * @param list1 * @pa ...

  3. java判断总共天数_java判断两个时间相差得天数

    方法一:通过Calendar类得日期比较,在这需要考虑闰年和平年,也要考虑跨年份 /** * date2比date1多的天数 * @param date1 * @param date2 * @retu ...

  4. java判断两个int相等_Java 判断两个变量是否相等

    判断两个变量是否相等的方式有两种:利用运算符 == 利用equals方法 (1)比较基本Java基本数据类型 比较基本数据类型,只能用"==",不能用equals,这里比较的是两个 ...

  5. java判断总共天数_Java判断两个日期相差天数的方法

    本文实例讲述了Java判断两个日期相差天数的方法.分享给大家供大家参考.具体如下: import java.util.Calendar; public class DateDifferent{ pub ...

  6. java 判断日期是同一天_java判断两个日期是否同一天的方法

    java判断两个日期是否同一天的方法: 1.使用Calendar来实现Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar. ...

  7. java 时间段重叠_java 判断两个时间段是否重叠的案例

    java 判断两个时间段是否重叠的案例 发布时间:2020-10-21 16:08:51 来源:脚本之家 阅读:108 作者:SakuyaM 最近业务上遇到需要判断两个时间段是否存在重叠的情况,网上找 ...

  8. java里怎么判断时间重合_java 判断两个时间段是否重叠的案例

    最近业务上遇到需要判断两个时间段是否存在重叠的情况,网上找了不少代码.大佬们的思路过于简洁了,有些理解不了.还只是个菜鸟码农,还是多锻炼锻炼自己的思路. 思路很简单:定义一个时间段的概念,既然是时间段 ...

  9. java判断总共天数_java 判断两个时间相差的天数

    1.实现目标 输入:两个日期 输出:两个日期相差的天数 2.代码实现 方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份 ...

最新文章

  1. 计算机常见知识获取方法,计算机信息处理技术基础知识
  2. 带你学python基础:面向对象编程
  3. PyQt5 笔记6 -- 对话框(QDialog)
  4. Unity内实现Android APK版本更新
  5. 通信调制体制设计之64QAM性能分析MATLAB仿真及代码
  6. Spark中导入scalax
  7. Spring 整合Mybatis Mapper动态代理方法
  8. 复杂的指针获取字符串里的内容放入数组
  9. MySQL 对 CREATE TABLE IF NOT EXISTS SELECT 的处理
  10. CSS3实现八方向云台控制器器样式
  11. 关于超定方程组的解算方法
  12. 关于 Android Studio 鼠标中键的一些技巧
  13. 已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值
  14. java实现远程控制
  15. 机械革命蛟龙16K和蛟龙16区别
  16. Java一维数组和二维数组的长度
  17. Python语言—爬虫之旅
  18. kaggle 2018 data science bowl 细胞核分割学习笔记
  19. 好看的渐变色网址收藏
  20. 关于jquery定时器设置问题 ios定时器无法响应问题 ios 时间显示为NaN问题 优惠时间倒计时

热门文章

  1. 宝塔面板修改默认的放行端口8888为8001并且生效
  2. 使用EndNote在Word中插入参考文献的格式设置
  3. 2021-05-02 收心继续
  4. We‘re sorry but XXX doesn‘t work properly without JavaScript enabled.
  5. Coremail2022Q4邮件安全报告:暴力破解骤降,盗号问题有所缓解?
  6. 软件测试需要学什么课程?好学吗?
  7. 我是如何设计一个包办所有对企政策的城市平台
  8. 让我们愉快的切割吧 - 4:如何在无特定间隔符下拆分字母和数字
  9. 界面原型设计工具开源软件
  10. 启动期间的内存管理之初始化过程概述----Linux内存管理(九)