复写equals、hashCode和toString方法
2024-10-19 04:30:16
equals、hashCode和toString 这三个方法都是object类的方法,由于所有的类都是继承这个类,所以每一个类都有这三个方法。
1.复写equals方法
原则:
- 首先,两个实例是相同的对象, 可以通过运算符instanceof来判断,注意instanceof是运算符而不是方法;也可以通过方法getClass() != o.getClass()来判断。
- 其次,两个实例的成员变量是相同的。
例子:
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方法
原则:
- 如果两个实例通过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 + '\'' +
'}';
}
}
最新文章
- java的四种引用,强弱软虚
- AJAX使用技巧:如何处理书签和翻页按扭
- Hession矩阵与牛顿迭代法
- LeetCode 刷题记录(二)
- C#中 ? 和?? 的用法
- javascript高级编程笔记04(基本概念)
- C++基础学习教程(八)
- 认识和选用常用的几种 GPRS 模块(转)
- TensorFlow练习13: 制作一个简单的聊天机器人
- rsync拉取服务器上的代码到本地
- python:爬虫获取淘宝/天猫的商品信息
- 我的简历 PHP Java C# 技术总监
- Android Studio启动后出现cannot bind to 127.0.0.1:5037 10048的解决办法
- 7月目标 socket , 一致性哈希算法 ; mongodb分片; 分布式消息队列; 中间件的使用场景
- REST Framework 的分页
- C语言 · 明明的随机数
- tomcat启动错误org.springframework.beans.factory.CannotLoadBeanClassException的解决
- matlab_legend_使用
- Webservice工作原理及实例
- 办公软件-Excel:Excel百科