1.Equals

很多人对equals方法的用法有些模糊,这里来为大家梳理下:

字符串中的equals方法,该方法用来判断两个字符串的内容是否相同。

例1:

String str1="Hello";
String str2="Hello";
String str3="java";
//字符串默认比较的是内容是否相同
//"=="号比较
System.out.println("str1==str2:" + (str1 == str2));//true
System.out.println("str1==str3:" + (str1 == str3));//false
//equals比较
System.out.println("str1.equals(str2):" + str1.equals(str2));//true
System.out.println("str1.equals(str3):" + str1.equals(str3));//false

从例1中我们可以看出,两个字符串之间的比较,无论用”==”号还是equals来进行,只要内容相同,结果就为True,内容不同,结果就为False;因此可以看出在字符串中,equals是用来判断两个字符串的内容是否相同.

那么在两个自定义对象之间的比较,是不是也是只要内容相同,就为True呢?我们来看代码:

例2:

//比较两个对象是否相同
Person p1 = new Person("小明", 18);
Person p2 = new Person("小明", 18);
System.out.println("p1.equals(p2):" + p1.equals(p2));//false

从例2中看,结果是False!!!这是为什么呢?

我们来分析下源码:

按住crtl+左键单击String 可以进入字符串源码中,

可以看出,String类重写了Object类的equals方法,所以能够完成内同比较功能。如果是我们自定义类的两个对象要进行比较内容是否相同,也需要进行覆盖重写Object中的equals方法

Object中的equals方法后结果为true了

//比较两个对象是否相同
Person p1 = new Person("小明", 18);
Person p2 = new Person("小明", 18);
// System.out.println("p1.equals(p2):" + p1.equals(p2));//false
System.out.println("p1.equals(p2):" + p1.equals(p2));//true

  

总结:

1.默认地址比较

如果没有覆盖重写equals方法,那么Object类中默认进行==运算符的对象地址比较,只要不是同一个对象,结果必然为false。

2.对象内容比较

如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法,在重写的equals方法中实现逻辑。

重点:如果要用equals方法对对象的内容比较,一定要重写Object中的equals方法!!!

equals方法那些事的更多相关文章

  1. 重写equals方法需要知道的事

    重写equals方法 相信在每个人都有过重写过java的equals的方法的经历.这篇博文就从以下几个方面说明重写equals方法的原由,与君共进步. 一 为什么要重写equals方法 首先我们了解e ...

  2. java中hashCode方法与equals方法的用法总结

    首先,想要明白hashCode的作用,必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重 ...

  3. JAVA中的各种 哈希码(HashCode) 与 equals方法在HIBERNATE的实际应用[转载]

    1.什么是哈希码(HashCode) 在Java中,哈希码代表对象的特征.例如对象 Java代码 String str1 = “aa”, str1.hashCode= 3104 String str2 ...

  4. 关于java中的hashcode和equals方法原理

    关于java中的hashcode和equals方法原理 1.介绍 java编程思想和很多资料都会对自定义javabean要求必须重写hashcode和equals方法,但并没有清晰给出为何重写此两个方 ...

  5. Java中equals方法null造成空指针异常的原因及解决方案

    正文 bug描述 当查找已修改的与未修改的做比较的时候,之前为null的值调用equals方法与其他值做比较的时候,会导致抛出空指针异常 知识补充 关于null,你不得不知道的几件事: 1.null是 ...

  6. List<T>Find方法,FindAll方法,Contains方法,Equals方法

    假如传入的T是一个类, List<MessageInfos> MessageInfos = new List<MessageInfos>(); MessageInfos= Me ...

  7. [java] 更好的书写equals方法-汇率换算器的实现(4)

    [java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]>   [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...

  8. java中的equals()方法重写

    如何java中默认的equals方法跟实际不符的话,需要重写equals方法.例如: public class TestEquals { public static void main(String[ ...

  9. java提高篇(十三)-----equals()方法总结

    equals() 超类Object中有这个equals()方法,该方法主要用于比较两个对象是否相等.该方法的源码如下: public boolean equals(Object obj) { retu ...

随机推荐

  1. hdu-5744 Keep On Movin(思维)

    题目链接: Keep On Movin Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Oth ...

  2. Js常见的六种报错

    EvalError: raised when an error occurs executing code in eval() EvalError:当一个错误发生在()执行的代码RangeError: ...

  3. 微信小程序把玩(三十)wx.request(object) API

    这里通过干活集中营的API接口真实请求下数据.如果提示URL 域名不合法,请在 mp 后台配置后重试修改asdebug.js两行代码即可可看下面图 百牛信息技术bainiu.ltd整理发布于博客园 定 ...

  4. 一、mysql简述

    该套讲义参考动力节点郭鑫老师的mysql视频整理所得 1.DBMS--数据库管理系统  Data Base Management System eg: mysql数据库管理系统 2.DB--数据库/仓 ...

  5. 树莓派也跑Docker和.NET Core

    树莓派是什么 树莓派就是一个卡片大小的迷你电脑. 安装系统 有了电脑,我们当然得先安装系统. 系统下载 https://www.raspberrypi.org/downloads/raspbian/ ...

  6. Sping中使用Junit进行测试

    分析: 1.应用程序的入口 main方法2.junit单元测试中,没有main方法也能执行 junit集成了一个main方法 该方法就会判断当前测试类中哪些方法有 @Test注解 junit就让有Te ...

  7. Tarjan找桥和割点与点连通分量与边连通分量【未成形】

    之前只学了个强连通Tarjan算法,然后又摸了缩点操作: 然后今天在lightoj摸了一道模板题,是求所有桥的题: 然后发现,要把:割点,割点集合,双连通,最小割边集合(桥),点连通分量,边连通分量都 ...

  8. Ogre 学习记录

    http://www.cppblog.com/richardhe/articles/55722.html 1: 设计初衷 它设计初衷是完全跨平台的.抽象的接口隐藏了平台相关的细节. 它设计初衷是大幅度 ...

  9. Bloomberg Desktop Api 关于历史Tick数据的一些参考

    使用WAPI命令可以看到当前BBG的Api情况. 目前2016年3月是V3的版本.其中有一个API Develper's Guide 中有Core Develper Guide的pdf, 里面提到了B ...

  10. Spring Cloud:使用Ribbon实现负载均衡详解(下)

    在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...