Java中equals()知识点总结 equals()方法是Java中一个常用的方法,它用于比较两个对象是否相等。下面我们将详细讲解equals()方法的使用和覆盖。 我们需要了解equals()方法的本意。在Object对象中定义的equals()方法的比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false。这个方法的作用是确定两个对象的引用是否相同。例如,在下面的代码中,我们创建了两个Fish对象,f1和f2,它们的weight和color属性相同,但是它们的引用不同。因此,f1 == f2和f1.equals(f2)的结果都是false。 ```java public class Fish { private int weight; private String color; public Fish(int weight, String color) { this.color = color; this.weight = weight; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } } public class EqualsTest { public static void main(String[] args) { Fish f1 = new Fish(1, "blue"); Fish f2 = new Fish(1, "blue"); System.out.println(f1 == f2); System.out.println(f1.equals(f2)); } } ``` 在JDK类中有一些类覆盖了Object类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true。这些类包括java.io.File、java.util.Date、java.lang.String、包装类(Integer、Double等)。例如,在下面的代码中,我们创建了两个String对象,s1和s2,它们的内容相同,因此s1.equals(s2)的结果为true。 ```java public class EqualsTest { public static void main(String[] args) { String s1 = new String("sss"); String s2 = new String("sss"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } } ``` 如果我们要自己覆盖equals()方法,让其比较内容或者有别的使用方法。例如,在下面的代码中,我们覆盖了Fish类的equals()方法,使其比较weight和color属性的值。 ```java public class Fish { private int weight; private String color; public Fish(int weight, String color) { this.color = color; this.weight = weight; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } Fish fish = (Fish) obj; return weight == fish.weight && Objects.equals(color, fish.color); } } ``` equals()方法是一个非常重要的方法,它用于比较两个对象是否相等。我们可以根据需要覆盖equals()方法,使其比较内容或者有别的使用方法。但是,我们需要注意equals()方法的本意和使用规则,以免引起错误。
- 粉丝: 1
- 资源: 899
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 番茄助手:vs2013-2022
- JSP在服装零售中的应用:销售管理系统设计与实现
- 手机和刀具检测16-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 网上花店:电子商务平台的设计与实现
- 自动控制原理-控制系统的数学模型实验
- 轨迹跟踪,考虑侧倾和曲率变化,同时修正侧偏刚度 simulink carsim联合仿真
- 高校勤工助学管理:系统设计与用户体验优化
- 手检测15-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- DEV-CPP-RED-PANDA
- 高通410随身WiFi ufi003 Debian固件
- abaqus齿轮动态分析,能够计算出mise应力等力学内容
- “互联网+”创新创业大赛创新奶茶店策划书.docx
- 《模拟电子技术》期末试卷.doc
- 电气控制及PLC试题库和答案复习提纲.doc
- 华南师范大学计算机网络试卷.doc
- 模拟电子技术基础期末试题.doc