28.1 api-- Object(toString equals)
/*
* String toString() : 返回该对象的字符串表示
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
* getClass():返回一个字节码对象
* Integer.toHexString():返回指定参数的十六进制字符串形式
* hashCode():返回该对象的哈希码值(内部地址)
*
* boolean equals(Object obj)
*
* 重建Object的toString方法快捷方式:鼠标右键Generate---toString
* 查看toString源码:ctrl+点击toString
*/
public class Object_toString_Demo {
public static void main(String[] args) {
day d = new day();
System.out.println(d);//不写默认执行对象的toString方法
System.out.println(d.toString());//toString方法对我们没有意义,需要重新方法。
//查看源码:ctrl+点击toString
Student s = new Student();
s.name = "aa";
s.age = 12;
System.out.println(s);//不写默认执行对象的toString方法
System.out.println(s.toString());
}
}
class day {//所有的类都默认继承的Object类,如果继承了指定类就使用其他类(总会有一个父类没有继承,它就继承Object)
int time;
}
//重建Object的toString方法快捷方式:鼠标右键Generate---toString
class Student extends Object {
String name;
int age;
@Override
public String toString() {
return "student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
输出

二、equals 案例
/*
* boolean equals(Object obj)
* 使用==来比较两个对象是否相等,则比较地址值是否相等
*
*可以重写equals方法来对比两个对象是否一样(不是比地址值,而是比我们设定的比较姓名、年龄)。
*重建Object的equals方法快捷方式:鼠标右键Generate---equals
*/
public class Object_Equals_Demo {
public static void main(String[] args) {
Student2 s = new Student2();
Student2 s2 = new Student2();
boolean flag = s.equals(s2);
System.out.println(s + "| |" + s2 + "| |" + flag);
}
}
class Student2 {
String name;
int age;
}
输出

方法重建
package day28_api.object; import java.util.ArrayList;
import java.util.Objects; /*
* boolean equals(Object obj)
* 使用==来比较两个对象是否相等,则比较地址值是否相等
*
* 可以重写equals方法来对比两个对象是否一样(不是比地址值,而是比我们设定的比较姓名、年龄)。
*/
public class Object_Equals_Demo {
public static void main(String[] args) {
Student3 s3 = new Student3("aa",12);
Student3 s4 = new Student3("aa",12);
// boolean flag2 = s3.equals(new ArrayList<>()); //检查两边类型是否一样(class)
boolean flag2 = s3.equals(s4);
System.out.println(s3 + "| |" + s4 + "| |" + flag2);//此时equals方法比较的不是地址值,而是重写的方法(比较姓名、年龄)
}
} class Student3 {
String name;
int age; //有参构造方法
public Student3(String name,int age) {
this.name = name;
this.age = age;
} // @Override
// public boolean equals(Object o) {
// Student3 nextstudent = (Student3) o;
//
// if(!this.name.equals(nextstudent.name)) {
// return false;
// }
//
// if(this.age != nextstudent.age) {
// return false;
// }
// return true;
// } @Override
public boolean equals(Object o) {
//提高效率 当前对象和传递进来的对象地址值一样,则不用比较成员
if (this == o) return true;
//提高代码的健壮性
if (o == null || getClass() != o.getClass()) return false;
//向下转型
Student3 student3 = (Student3) o;
//&&两边都成立true,有一边不成立则false
return age == student3.age &&
Objects.equals(name, student3.name); }
//重写该方法可以让地址也匹配
// @Override
// public int hashCode() {
//
// return Objects.hash(name, age);
// }
}
输出

取消hashcode重新的注释

28.1 api-- Object(toString equals)的更多相关文章
- DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射
写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉,但我觉得应该会很爽,博文后面再记录下用过的感受,这边就不多说. 阅读目录: 上一篇回顾 ...
- Value Object(值对象)如何使用 EF 进行正确映射
DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射 写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉, ...
- Role Object(角色对象)
Role Object(角色对象) 索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Role Object 的示例实现. 意图 通过明确地附加角色对象到目标对象中,以使对象可以 ...
- 免费api大全(更新中)
免费api大全(更新中) API大全 http://www.apidq.com/ (这个碉堡了) 天气接口 气象局接口 完整数据:http://m.weather.com.cn/data/10 ...
- SR4K的API使用(libMesaSR.dll)
看看libMesaSR.dll的导出函数: 遇到的问题: error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int 解决: HWND等未定义 解决: #incl ...
- Web API 2 入门——Web API 2(C#)入门(谷歌翻译)
ASP.NET Web API 2(C#)入门 在这篇文章中 本教程中使用的软件版本 创建一个Web API项目 添加模型 添加控制器 使用Javascript和jQuery调用Web API 运行应 ...
- Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)
原文:Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- 基于 springMVC 的 RESTful HTTP API 实践(服务端)
理解 REST REST(Representational State Transfer),中文翻译叫"表述性状态转移".是 Roy Thomas Fielding 在他2000年 ...
- Object类----toString,equals,hashcode
一.toString 的应用方法与覆写 public class testoveridetoString { public static void main(String[] args) { /*ob ...
随机推荐
- 苹果笔记本 安装 ubuntu 默认没有无线网卡 的 解决方案
sudo apt-get update sudo apt-get install bcmwl-kernel-source
- 左侧带三角的Card css支持hover阴影
<div class="inputReportIndex"> <div class="inner"> <div class=&qu ...
- 【分布式锁】02-使用Redisson实现公平锁原理
前言 前面分析了Redisson可重入锁的原理,主要是通过lua脚本加锁及设置过期时间来保证锁执行的原子性,然后每个线程获取锁会将获取锁的次数+1,释放锁会将当前锁次数-1,如果为0则表示释放锁成功. ...
- JavaScript数组排序(冒泡排序、选择排序、桶排序、快速排序)
* 以下均是以实现数组的从小到大排序为例 1.冒泡排序 先遍历数组,让相邻的两个元素进行两两比较 .如果要求小到大排:最大的应该在最后面,如果前面的比后面的大,就要换位置: 数组遍历一遍以后,也就是第 ...
- 爬虫 | Python下载m3u8视频
目录 从 m3u8 文件中解析出 ts 信息 按时间截取视频 抓取 ts 文件 单文件测试 批量下载 合并 ts 文件 将合并的ts文件转化为视频文件 参考资料: m3u8格式介绍 ts文件格式介绍 ...
- 微信开发+百度AI学习:微信网页开发环境搭建
参考微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 两步即可获取微信网页开发能力 STEP1: ...
- .NET Core使用NPOI导出复杂,美观的Excel详解
前言: 这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦.客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做 ...
- Hive知识点
1.Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理:(也就是说对存储在HDFS中的数据进行分析和管理,我们不想使用手工,我们建立一个工具把,那么这个 ...
- eNSP上NAT的配置
NAT介绍: 早在20世纪90年代初,有关RFC文档就提出了IP地址耗尽的可能性.IPv6技术的提出虽然可以从根本上解决地址短缺的问题,但是也无法立刻替换现有成熟且广泛应用的IPv4网络.既然不能 立 ...
- MQ的理论理解
MQ(消息队列)简介 概念 : 消息队列(MQ)是一种应用程序对应用程序的通信方法. 应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们. 消息传递指的是程序之间 ...