/*
* 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)的更多相关文章

  1. DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射

    写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉,但我觉得应该会很爽,博文后面再记录下用过的感受,这边就不多说. 阅读目录: 上一篇回顾 ...

  2. Value Object(值对象)如何使用 EF 进行正确映射

    DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射 写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉, ...

  3. Role Object(角色对象)

    Role Object(角色对象) 索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Role Object 的示例实现. 意图 通过明确地附加角色对象到目标对象中,以使对象可以 ...

  4. 免费api大全(更新中)

    免费api大全(更新中) API大全  http://www.apidq.com/    (这个碉堡了) 天气接口 气象局接口 完整数据:http://m.weather.com.cn/data/10 ...

  5. SR4K的API使用(libMesaSR.dll)

    看看libMesaSR.dll的导出函数: 遇到的问题: error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int 解决: HWND等未定义 解决: #incl ...

  6. Web API 2 入门——Web API 2(C#)入门(谷歌翻译)

    ASP.NET Web API 2(C#)入门 在这篇文章中 本教程中使用的软件版本 创建一个Web API项目 添加模型 添加控制器 使用Javascript和jQuery调用Web API 运行应 ...

  7. Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)

    原文:Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...

  8. 基于 springMVC 的 RESTful HTTP API 实践(服务端)

    理解 REST REST(Representational State Transfer),中文翻译叫"表述性状态转移".是 Roy Thomas Fielding 在他2000年 ...

  9. Object类----toString,equals,hashcode

    一.toString 的应用方法与覆写 public class testoveridetoString { public static void main(String[] args) { /*ob ...

随机推荐

  1. 【JAVA进阶架构师指南】之二:JVM篇

    前言   谈到JAVA,就不得不提JVM---JAVA程序员绕不开的话题.也许有童鞋会说,我不懂JVM,但是我一样可以写出JAVA代码,我相信说这种话的童鞋,往往是只有1-3年的初级开发人员,对JAV ...

  2. 【Weiss】【第03章】练习3.21:单数组模拟双栈

    [练习3.21] 编写仅用一个数组而实现两个栈的例程.除非数组的每一个单元都被使用,否则栈例程不能有溢出声明. Answer: 很简单,一个栈从数组头起,一个栈从数组尾起,分别保留左右栈头索引. 如l ...

  3. C# 基础知识系列- 1 数据类型

    常见数据类型 C#的类型一般分为值类型.引用类型两大类型. 值类型的实例存放在栈中,引用类型会在栈中放置一个指针指向堆中的某一块内容. C#为我们内置了几个数据类型供我们使用: 关键词简写 对应的类全 ...

  4. 采用最简单的方式在ASP.NET Core应用中实现认证、登录和注销

    在安全领域,认证和授权是两个重要的主题.认证是安全体系的第一道屏障,是守护整个应用或者服务的第一道大门.当访问者请求进入的时候,认证体系通过验证对方的提供凭证确定其真实身份.认证体系只有在证实了访问者 ...

  5. Mol Cell Proteomics. | Mapping Spatio-temporal Microproteomics Landscape in Experimental Model of Traumatic Brain Injury Unveils a link to Parkinson’s Disease

    期刊:Molecular & Cellular Proteomics 发表时间:June 16, 2019 通讯作者:Michel Salzet,Isabelle Fournier 一.  概 ...

  6. 基于 HTML5 WebGL 的 智慧楼宇能源监控系统

    前言 21世纪,在能源危机和全球气候变暖的压力下,太阳能等可再生能源越来越受到关注,其中光伏建筑一体化逐渐成为绿色发展方式和生活方式,加强节能降耗,支持低碳产业和新能源.可再生能源发展,也已经成为国家 ...

  7. 浅尝Go语言GC

    大家好,我是小栈君,因为个人和工作的缘故,所以拖更了一点时间,但是关于拖更的内容小栈君会在后续的时间中补回来,还希望大家继续支持和关注小栈君.当然,在国内疫情稍微减缓的情况下,小栈君在这里也多说两句, ...

  8. 关于STM32F103系列从大容量向中容量移植的若干问题

    一.把STM32F103大容量移植到STM32F103C8T6上的步骤: 1.换启动文件 startup_stm32f10x_cl.s           ——互联型的器件 包括:STM32F105x ...

  9. ABP.Net Core 小白使用教程

    自己简单的记录一下 1.到官网下载模版项目 我下载的是那个前后分离Vue版 2.用VS2017打开,将Web.Host设置为启动项(Core 2.1要看自己VS下载了这个版本没) 3.设置数据库连接 ...

  10. 模块 time datetime 时间获取和处理

    模块_time 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块. 1 延时 time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2 获取当前时间戳tim ...