equals 相信大家就知道,就是比较,我们平时也会在自己定义的类中加入自己重写的equals用来比较两个类是否相同,例如这样

public class Person {private String name; //姓名private int age; //年龄private String nickName; //昵称public Person(String name,int age,String nickName){this.name = name;this.age = age;this.nickName = nickName;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getNickName() {return nickName;}public void setNickName(String nickName) {this.nickName = nickName;}//比较方法public boolean equals(Person p){return this.name.equals(p.name)&& this.age==p.age && this.nickName.equals(p.nickName);}
}

然后比较的时候就这样用
public class Main {public static void main(String[] args) {Person p1 = new Person("张三",14,"三狗子");Person p2 = new Person("张三",14,"三狗子");if(p1.equals(p2)){System.out.println("一样");}else{System.out.println("不一样");}}}

但是我们大多数会用来比较两个字符串之间是否一样,例如上面Person类中的equals方法中的this.name.equals(name)这里的equals是调用java的api,但这里有个问题例如如果name是null怎么办?

这样的话我们就不得不修改下代码改成这样

//比较方法public boolean equals(Person p){return Objects.equals(this.name,p.name) && this.age == p.age && Objects.equals(this.nickName, p.nickName);}

这样就可以避免null的尴尬了。

解释:

为了防备name或者nickName可能为null的情况,需要使用Objects.equals方法,如果两个参数都为null,Objects.equals(a,b)调用将返回true;如果其中一个参数为null则返回false;否则,如果两个参数都不为null的话,则调用a.equals(b)就可以了。

学习记录,如果错误请指正谢谢!


转载于:https://www.cnblogs.com/woaixingxing/p/7482215.html

Java学习笔记之equals和Objects.equals相关推荐

  1. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  2. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

  3. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  4. Java学习笔记5-1——多线程

    目录 前言 核心概念 线程创建 继承Thread类 实现Runnable接口 上述两个方法小结 实现Callable接口 并发问题简介 静态代理模式 线程状态 线程停止(stop) 线程休眠(slee ...

  5. Java学习笔记——流程控制

    Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...

  6. 2021-05-31以及2021-06-01(从136开始) JAVA学习笔记

    JAVA学习笔记 1学习易错点: 2 具体内容 112 构造方法 113 构造方法的注意事项 114 标准类的制作!!! 115 api string 118 string构造方法![在这里插入图片描 ...

  7. 郑志远的java学习笔记

    郑志远的java学习笔记 郑志远    CCB 1         Java起源 略 2         Java语言概述 1.面向对象编程的3个原则:封装(encapsulation).继承(inh ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. java学习笔记:全部,txt版本

    java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...

  10. Java学习笔记项目三:开发团队调度软件(尚硅谷)

    JAVA学习笔记开发团队调度软件 ①创建基础组件 Equipment 接口 package august.domain;/*** 设备领取** @author : Crazy_August* @Dat ...

最新文章

  1. 醉酒删库:几杯红酒下肚,7小时数据消失...
  2. 下边框_山寨iPhone12Pro开箱:浴霸四摄更小,下边框有点宽
  3. OpenStack之Keystone模块
  4. 算法二之树形选择排序
  5. c语言字体取模软件下载,非常好用的lcd汉字取模软件下载_非常好用的lcd汉字取模软件官方下载-太平洋下载中心...
  6. php100教程源码,PHP100 视频教程 2012-2013版_PHP教程
  7. Centos系统普通用户开启sudo命令
  8. 外媒:三星电子正与华为商讨芯片代工事宜
  9. 95-140-132-源码-transform-算子Join
  10. [译]R语言——Shiny框架之入门(三):如何启动一个Shiny应用
  11. AI研发新药真有那么神?可能哈佛、斯坦福和阿斯利康实验室都在吹牛
  12. 业务初期野蛮生长阶段,微服务化比较麻烦
  13. 用R和BioConductor进行基因芯片数据分析(四):芯片内归一化
  14. 第1章 操作系统引论课后答案
  15. 简单易用的标签列表界面(宝宝用了都不哭了 )
  16. web项目上云_联想Filez携手浙江中烟,发力“云”端,打造“烟草上云”新势能...
  17. 7针oled显示中文及图片arduino。ug8lib
  18. 积极人生/The Seven Habits of Highly Effective People
  19. Postgresql默认用户名与密码
  20. 单缝斜入射衍射_傅里叶变换解夫琅禾费衍射问题的几个例子_2

热门文章

  1. python spangt_python怎么爬去spanlt;/span中间标签的内容
  2. imp oracle full,Oracle 10g imp 之 full database (转官档)
  3. 漫游飞行_魔兽世界:德拉诺时光周 冲声望解锁德拉诺飞行好时机
  4. 【caffe-Windows】关于LSTM的使用-coco数据集
  5. tensorboard的可视化及模型可视化
  6. Java生鲜电商平台-电商支付流程架构实战
  7. Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)
  8. GSON 循环引用的对象转为 JSON 造成栈溢出
  9. git 删除远程分支和本地分支
  10. 从数据库中取出数据表,导入并生成excel