JAVA_equals方法重写

简介: JAVA_equals方法重写

  “==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。


     Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认为id相同的人就是同一个人、学籍系统中认为学号相同的人就是同一个人。


     Object 的 equals 方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回 true 否则返回 false。但是,我们可以根据我们自己的要求重写equals方法。


equals方法测试和自定义类重写equals方法:

package cn.sxt.oo2;
public class TestEquals {
  public static void main(String[] args) {
    Object obj;
    String str;
    User   u1 = new User(1000,"张三","123456");
    User   u2 = new User(1000,"李四","123456");
    System.out.println(u1==u2);
    System.out.println(u1.equals(u2)); 
    String  str1 = new String("sxt");
    String  str2 = new String("sxt");
    System.out.println(str1==str2);  //false
    System.out.println(str1.equals(str2));  //true
  }
}
class  User  {
  int id;
  String name;
  String pwd;
  public User(int id, String name, String pwd) {
    super();
    this.id = id;
    this.name = name;
    this.pwd = pwd;
  }
  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + id;
    return result;
  }
  @Override
  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    User other = (User) obj;
    if (id != other.id)
      return false;
    return true;
  }
}

运行效果:


20200201171846591.png


注:JDK提供的一些类,如String、Date、包装类等,重写了Object的equals方法,调用这些类的equals方法, x.equals (y) ,当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回 true 否则返回 false。


目录
相关文章
|
2月前
|
Java 编译器
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
|
4月前
|
Java
Java | 类、实例初始化 、方法重写规则
Java | 类、实例初始化 、方法重写规则
46 0
|
4月前
|
Java
java面试基础 -- 方法重载 & 方法重写
java面试基础 -- 方法重载 & 方法重写
23 0
|
4月前
|
Java 编译器
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
35 0
|
Java
Java方法重写
1.什么是方法重写 2.方法重写的规则 3.重写与重载的区别
122 0
|
4月前
|
Java 编译器
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
262 0
|
Java
Java面向对象之方法重写详解
Java面向对象之方法重写详解
77 0
|
Java
【Java面向对象】方法重载,方法重写你还傻傻弄不清吗?
【Java面向对象】方法重载,方法重写你还傻傻弄不清吗?
78 0
|
Java
【Java面试宝典】常用类中的方法重写|equals方法与逻辑运算符==的区别
【Java面试宝典】常用类中的方法重写|equals方法与逻辑运算符==的区别
84 0
java202302java学习笔记第七天-方法重写2
java202302java学习笔记第七天-方法重写2
50 0
java202302java学习笔记第七天-方法重写2