Java equals方法重写

假如我们要求,当两个学生的id一样时就是同一个人,代码实现如下:

public class EqualsTest {public static void main(String[] args) {Student s1 = new Student(112);Student s2 = new Student(112);System.out.println(s1.equals(s2));}}
class Student{private int id;public Student(int id){this.id = id;}public boolean equals(Object obj){if(this == obj){return true;}if(obj instanceof Student){Student s = (Student)obj;if(s.id == this.id){return true;}}return false;}
}

当我们不重写Object类的equals方法时,无法实现上面的要求,因为equals方法继承自父类Object,实现的是比较两个对象的引用地址是否一致。

我们只有重写父类Object的equals方法:当比较的两个对象是同一个时,可定是一样的;当不是同一个对象时,首先要看传进来的对象是否是学生类型,如果不是可定也是不一样,如果是则进行id比较,id相同则是同一个人。

转载于:https://blog.51cto.com/zlfwmm/1694240

Java记录 -24- equals方法重写相关推荐

  1. Java中的equals()方法重写

    public boolean equals(Object obj) {return (this == obj); } Object类提供的 equals() 方法默认是用 == 来进行比较的,也就是说 ...

  2. Java中关于==和equal的区别 以及equals()方法重写

    例子i: string1="aaa"; string2="aaa"; String string3=new String("aaa"); S ...

  3. java中equals函数所在的类,重写Java中的equals方法介绍

    Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...

  4. Java中equals()方法重写

    Java中的equals()方法是在Object类中定义,Object类是所有类的父类.换句话说,任何类都隐含地继承了该方法.判断两个对象的内容是否相同,必须使用equals()方法,对于没有重写该方 ...

  5. java中的equals方法

    一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test;2 3 public class TestEquals {4 public sta ...

  6. 在聊Java中的equals方法

    2019独角兽企业重金招聘Python工程师标准>>> java规范中equals方法特征 自反性(对于任何非空引用x, x.equals(x) 返回true;) 对称性(对于任何引 ...

  7. java中equals方法重写详解(彻底搞定)

    首先上案例: public static void main(String[] args){String str1 = "abc";String str2 = "abc& ...

  8. java基础—Objcet中的equals方法重写

    package mytest;public class Test1{public static void main(String[] args) {Person p1 = new Person(20) ...

  9. java equals方法重写_Java重写equals方法

    为什么equals() 方法需要重写? 判断连个对象在逻辑上是否相等,如果根据类成员变量来判断两个的实力是否相等,而继承Object中的 equals 方法只能判断两个引用变量是否是同一个对象.这样我 ...

  10. 接口、抽象类、方法复写、类Equals方法重写

    接口: /** Java接口中的數據成員必須初始化,該成員有隱藏的final.satic.常量,* 一次賦值后不可在賦值* 成員方法訪問修飾符必須是公共修飾符,可以顯示聲明也可以不聲明* 成員方法必須 ...

最新文章

  1. 【Qt】Qt信号与槽使用不当,使程序崩溃
  2. ajax实现简单计算器,一个简单的jQuery计算器实现了连续计算功能
  3. 计算机网络(谢希仁第八版)第三章:数据链路层
  4. FastDFS在项目中的应用
  5. 数据结构与算法之快速排序
  6. c语言中 文件的字符串输入函数是6,【C语言】文件操作及输入输出格式(文件常用的库函数)...
  7. fusionsphere读音_hydroxyapatite
  8. dingo php,dingo 配置
  9. Vue——进阶(过滤器、数据交互、生命周期、ES6语法)
  10. [LeetCode] 3Sum Closest
  11. maven依赖avro_avro序列化详细操作
  12. 一个node系统的日志管理
  13. python之数据处理篇
  14. python图片背景透明
  15. matlab 直方图修正,matlab直方图修正
  16. Flink Table 和 DataStream 转换
  17. 网络安全究竟是什么?如何成为一位优秀的网络安全工程师?
  18. ftp关键技术二:nobody进程创建和使用(一)
  19. 中国外文局文化传播中心借力vLive虚拟直播,打造国际汉文化云讲堂
  20. IMS 会话过程 响应180还是183?

热门文章

  1. Cadvisor源码分析监控项
  2. 正则 去除字符串中的特殊字符
  3. 转换时间对象和字符串对象添加时间
  4. Swift主题色顶级解决方案
  5. java框架篇---Struts2的处理流程
  6. 《LeetCode力扣练习》第14题 C语言版 (做出来就行,别问我效率。。。。)
  7. 并发和并行的区别_多核、多处理器、并发、并行、超线程概念总结
  8. go 函数参数nil_深入理解 Go-Defer的机制
  9. 冯诺依曼计算机程序及其执行,第4章冯.诺依曼计算机:机器级程序与其执行练习题答案解析...
  10. linux io模拟时序,spi四种模式io模拟时序