equals、hashCode和toString 这三个方法都是object类的方法,由于所有的类都是继承这个类,所以每一个类都有这三个方法。

1.复写equals方法

原则:

  1. 首先,两个实例是相同的对象, 可以通过运算符instanceof来判断,注意instanceof是运算符而不是方法;也可以通过方法getClass() != o.getClass()来判断。
  2. 其次,两个实例的成员变量是相同的。

例子:

public class User {
String name;
int age; @Override
public boolean equals(Object o) {
//如果这个两个实例是相同的,那么两个实例指向同一块堆空间,所以一定是相同的
if (this == o)
return true; if (o == null || getClass() != o.getClass())
return false; User user = (User) o; if (age != user.age) return false;
return name.equals(user.name); } }

2.复写hashCode方法

原则:

  1. 如果两个实例通过equals方法判断是相同的,那么两个实例通过hashCode方法返回的结果也必须是相同的。

例子:

public class User {
String name;
int age; @Override
public int hashCode() {
int result = name.hashCode();
result = 31 * result + age;
return result;
}
}

3.复写toString方法

如果没有复写这个方法,那么默认的就会打印出这个实例的类名和其对应的hash值

例子:

public class User {
String name;
int age; @Override
public String toString() {
return "User{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
 
 
 
 
 

最新文章

  1. java的四种引用,强弱软虚
  2. AJAX使用技巧:如何处理书签和翻页按扭
  3. Hession矩阵与牛顿迭代法
  4. LeetCode 刷题记录(二)
  5. C#中 ? 和?? 的用法
  6. javascript高级编程笔记04(基本概念)
  7. C++基础学习教程(八)
  8. 认识和选用常用的几种 GPRS 模块(转)
  9. TensorFlow练习13: 制作一个简单的聊天机器人
  10. rsync拉取服务器上的代码到本地
  11. python:爬虫获取淘宝/天猫的商品信息
  12. 我的简历 PHP Java C# 技术总监
  13. Android Studio启动后出现cannot bind to 127.0.0.1:5037 10048的解决办法
  14. 7月目标 socket , 一致性哈希算法 ; mongodb分片; 分布式消息队列; 中间件的使用场景
  15. REST Framework 的分页
  16. C语言 · 明明的随机数
  17. tomcat启动错误org.springframework.beans.factory.CannotLoadBeanClassException的解决
  18. matlab_legend_使用
  19. Webservice工作原理及实例
  20. 办公软件-Excel:Excel百科

热门文章

  1. JAVA中断机制详解
  2. mongodb新人扫盲
  3. git常用命令记录
  4. struts2.1.6教程十一、注解配置
  5. java虚拟机学习-JVM调优总结-典型配置举例(10)
  6. DDD领域驱动之干货(三)完结篇!
  7. 全景智慧城市常诚——一个实体商家“自剖”VR全景的势在必得
  8. 克隆 CentOS 后系统启动问题解析
  9. C#解析json的两种方式
  10. os模块学习小随笔