/*
* String toString() : 返回该对象的字符串表示
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
* getClass():返回一个字节码对象
* Integer.toHexString():返回指定参数的十六进制字符串形式
* hashCode():返回该对象的哈希码值(内部地址)
*
* boolean equals(Object obj)
*
* 重建Object的toString方法快捷方式:鼠标右键Generate---toString
* 查看toString源码:ctrl+点击toString
*/

  1. public class Object_toString_Demo {
  2. public static void main(String[] args) {
  3. day d = new day();
  4. System.out.println(d);//不写默认执行对象的toString方法
  5. System.out.println(d.toString());//toString方法对我们没有意义,需要重新方法。
  6. //查看源码:ctrl+点击toString
  7.  
  8. Student s = new Student();
  9. s.name = "aa";
  10. s.age = 12;
  11. System.out.println(s);//不写默认执行对象的toString方法
  12. System.out.println(s.toString());
  13. }
  14. }
  15.  
  16. class day {//所有的类都默认继承的Object类,如果继承了指定类就使用其他类(总会有一个父类没有继承,它就继承Object)
  17. int time;
  18. }
  19.  
  20. //重建Object的toString方法快捷方式:鼠标右键Generate---toString
  21. class Student extends Object {
  22. String name;
  23. int age;
  24.  
  25. @Override
  26. public String toString() {
  27. return "student{" +
  28. "name='" + name + '\'' +
  29. ", age=" + age +
  30. '}';
  31. }
  32. }

输出

二、equals 案例

/*
* boolean equals(Object obj)
* 使用==来比较两个对象是否相等,则比较地址值是否相等

*

*可以重写equals方法来对比两个对象是否一样(不是比地址值,而是比我们设定的比较姓名、年龄)。

*重建Object的equals方法快捷方式:鼠标右键Generate---equals

*/

  1. public class Object_Equals_Demo {
  2. public static void main(String[] args) {
  3. Student2 s = new Student2();
  4. Student2 s2 = new Student2();
  5. boolean flag = s.equals(s2);
  6. System.out.println(s + "| |" + s2 + "| |" + flag);
  7. }
  8. }
  9.  
  10. class Student2 {
  11. String name;
  12. int age;
  13.  
  14. }

输出

方法重建

  1. package day28_api.object;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Objects;
  5.  
  6. /*
  7. * boolean equals(Object obj)
  8. * 使用==来比较两个对象是否相等,则比较地址值是否相等
  9. *
  10. * 可以重写equals方法来对比两个对象是否一样(不是比地址值,而是比我们设定的比较姓名、年龄)。
  11. */
  12. public class Object_Equals_Demo {
  13. public static void main(String[] args) {
  14. Student3 s3 = new Student3("aa",12);
  15. Student3 s4 = new Student3("aa",12);
  16. // boolean flag2 = s3.equals(new ArrayList<>()); //检查两边类型是否一样(class)
  17. boolean flag2 = s3.equals(s4);
  18. System.out.println(s3 + "| |" + s4 + "| |" + flag2);//此时equals方法比较的不是地址值,而是重写的方法(比较姓名、年龄)
  19. }
  20. }
  21.  
  22. class Student3 {
  23. String name;
  24. int age;
  25.  
  26. //有参构造方法
  27. public Student3(String name,int age) {
  28. this.name = name;
  29. this.age = age;
  30. }
  31.  
  32. // @Override
  33. // public boolean equals(Object o) {
  34. // Student3 nextstudent = (Student3) o;
  35. //
  36. // if(!this.name.equals(nextstudent.name)) {
  37. // return false;
  38. // }
  39. //
  40. // if(this.age != nextstudent.age) {
  41. // return false;
  42. // }
  43. // return true;
  44. // }
  45.  
  46. @Override
  47. public boolean equals(Object o) {
  48. //提高效率 当前对象和传递进来的对象地址值一样,则不用比较成员
  49. if (this == o) return true;
  50. //提高代码的健壮性
  51. if (o == null || getClass() != o.getClass()) return false;
  52. //向下转型
  53. Student3 student3 = (Student3) o;
  54. //&&两边都成立true,有一边不成立则false
  55. return age == student3.age &&
  56. Objects.equals(name, student3.name);
  57.  
  58. }

//重写该方法可以让地址也匹配
// @Override
// public int hashCode() {
//
// return Objects.hash(name, age);
// }

  1. }

输出

取消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. 建议5:防止switch贯穿

    switch语句,除非明确地中断流程,否则每次条件判断后都贯穿到下一个case条件.例如 switch(expression){ case label1: statementList1 case la ...

  2. python的进制转换

    转载于:https://www.cnblogs.com/FWF1944/p/11132409.html(方法论190404) Python整数能够以十六进制,八进制和二进制来编写,作为一般以10位基数 ...

  3. mybatis3.2.7应用_高级映射(一对一、一对多、多对多)

    1. 一对一查询 需求:查询订单信息,关联查询创建订单的用户信息 1.1 使用resultType实现 1.1.1 sql语句 确定查询的主表:订单表       确定查询的关联表:用户表      ...

  4. 【原创】基于RBI的性能测试理念,通过jmeter快速定位接口最大并发用户数

    测试工具:jmeter v_5.2 测试对象:某网站的物料获取接口,需登录后操作 测试目的:快速定位该接口最大并发用户数 思路&步骤: 1.模拟一个场景,某天临近下班,主管突然过来让你测下你们 ...

  5. JDBC(三)----Spring JDBC(JDBCTemplate)

    ##  Spring  JDBC *  Spring框架对JDBC的简单封装.提供了一个JDBCTemplate对象简化JDBC的开发 1.步骤 1.导入jar包 2.创建JDBCTemplate对象 ...

  6. P5020 货币系统 题解

    原题链接 简要题意: 求一个长度最小的货币系统与给出的货币系统等价.求这个货币系统的长度.等价的定义详见题目,不再赘述. 本文可能用到一些集合论,请放心食用. 算法一 \(n=2\) 时,只需判断两个 ...

  7. Leetcode_面试题62. 圆圈中最后剩下的数字(约瑟夫环)

    经典的约瑟夫环,n个人排成一圈,第m个出队. 递归 code1 class Solution { public: int f(int n,int m){ if(n==1){ //递归边界,最后一个 r ...

  8. 终极解决方案——sbt配置阿里镜像源,解决sbt下载慢,dump project structure from sbt耗时问题

    #sbt下载慢的问题 默认情况下,sbt使用mvn2仓库下载依赖,如下载scalatest时,idea的sbtshell 显示如下url https://repo1.maven.org/maven2/ ...

  9. Python第六章-函数02-函数的作用域

    函数 三.作用域规则 有了函数之后,我们必须要面对一个作用域的问题. 比如:你现在访问一个变量,那么 python 解析器是怎么查找到这个变量,并读取到这个变量的值的呢? 依靠的就是作用域规则! 3. ...

  10. 【深度强化学习】Curriculum-guided Hindsight Experience Replay读后感

    目录 导读 目录 正文 Abstract[摘要] Introduction[介绍] 导读 看任何一个领域的文章,一定要看第一手资料.学习他们的思考方式,论述逻辑,得出一点自己的感悟.因此,通过阅读pa ...