java -> equals方法与toString方法
equals方法
equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符(比较内存地址)。
在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。如下代码演示:
/*
描述人这个类,并定义功能根据年龄判断是否是同龄人
由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
在方法体中根据类的属性值进行比较
*/
class Person extends Object{
int age ;
//复写父类的equals方法,实现自己的比较方式
public boolean equals(Object obj) {
//判断当前调用equals方法的对象和传递进来的对象是否是同一个
if(this == obj){
return true;
}
//判断传递进来的对象是否是Person类型
if(!(obj instanceof Person)){
return false;
}
//将obj向下转型为Perosn引用,访问其属性
Person p = (Person)obj;
return this.age == p.age;
}
}
注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
toString方法
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
class Person extends Object{
int age ;
//根据Person类的属性重写toString方法
public String toString() {
return "Person [age=" + age + "]";
}
}
最新文章
- bzoj4314
- 外接Hdmi没有声音怎么设置
- java提高篇(七)-----关键字static
- Codeforces Round #369 (Div. 2) D. Directed Roads dfs求某个联通块的在环上的点的数量
- CSS之边框覆盖
- 【EF 译文系列】重试执行策略的局限性(EF 版本至少为 6)
- Android开发开始--环境搭建
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(七)-- 结构化配置
- Linux使用技巧9--用dpkg管理你的软件
- Hadoop-Yarn-HA集群搭建(搭建篇)
- Kendo UI开发教程(23): 单页面应用(一)概述
- 错误与修复:ASP.NET无法检测IE10,IE11,导致_doPostBack未定义JavaScript错误,恒处于F5卷动条位置
- TypeScript开发ReactNative之fetch函数的提示问题
- TensorFlow LSTM 注意力机制图解
- Beta 冲刺(5/7)
- 深入理解 ES6中的 Reflect
- 如何判断是否为同一个App,Ionic3如何修改包名
- P2602 [ZJOI2010]数字计数
- Linux 命令行下导入导出 .sql 文件
- JavaScript大杂烩16 - 推荐实践
热门文章
- js前端加密,php后端解密(crypto-js,openssl_decrypt)
- Docker安装yapi
- 快速部署一个Kubernetes集群
- Golang Map实现(四) map 的赋值和扩容
- Asp.Net Core 3.1学习-依赖注入、服务生命周期(6)
- Python爬虫之记录一次下载验证码的尝试
- SpringBoot Mybatis-Plus 整合 dynamic-datasource-spring-boot-starter 对数据库进行读写分离
- 某拍sig算法揭秘---50行代码下载5000万小姐姐自拍小视频
- mac OS 查看开机/关机/重启记录
- MySQL5.7 并行复制