equals()方法;

  equals方法是Object类中的方法;Object是所有类的祖宗,所以所有类都有equals()方法;

  boolean equals(Object obj);

  equals方法是比较两个对象是否相等;对象为引用数据类型,比较的是内存地址;

public class Person {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}

public class Test1 {public static void main(String[] args) {Person p1=new Person();p1.setName("张三");System.out.println(p1);//p1内存地址Person p2=new Person();     p2.setName("张三");System.out.println(p2);//p2内存地址boolean b=p1.equals(p2);System.out.println(b);}
}//运行结果:com.zs.demo5.Person@15db9742
//         com.zs.demo5.Person@6d06d69c
//         false                        

可以看出,虽然p1与p2内用相同,但是内存地址却不同,所以比较结果为false;很多情况下我们是要比较他们的内容是否相同,所以需要重写equals方法;

public class Person {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {//重写equals方法if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}
}

public class Test1 {public static void main(String[] args) {Person p1=new Person();p1.setName("张三");System.out.println(p1);//p1内存地址Person p2=new Person();     p2.setName("张三");System.out.println(p2);//p2内存地址boolean b=p1.equals(p2);System.out.println(b);}
}
//运行结果:com.zs.demo5.Person@bd308
//     com.zs.demo5.Person@1f
//     true

toString()方法;输出语句中调用的是toString方法,上例中,输出的是内存地址,当需要看对象中的值的时候,就重写toString()方法;

public class Person {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {//重写toString()方法return "Person [name=" + name + "]";}}

public class Test1 {public static void main(String[] args) {Person p1=new Person();p1.setName("张三");System.out.println(p1);//p1内存地址Person p2=new Person();     p2.setName("张三");System.out.println(p2);//p2内存地址}
}//运行结果:

//Person [name=张三]
//Person [name=张三]

这里添加一个特殊的例子

public class Demo {public static void main(String[] args) {String s="hello";//String 直接赋值的时候,可以通过==判断是否相等;String s2="hello";System.out.println(s==s2);//==判断;返回值为trueString s3=new String("hello");//创建string对象String s4=new String("hello");System.out.println(s3==s4);//当string为引用类型变量创建的对象时,s2、s3代表的是对象;比较的是内存地址;结果是false;System.out.println(s3.equals(s4));//String重写了Object中equals()方法,比较结果为true;
    }
}

  

  

转载于:https://www.cnblogs.com/Zs-book1/p/10554856.html

Java学习笔记13(equals()方法;toString()方法)相关推荐

  1. JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类

    一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...

  2. java学习笔记(13) 第13章 - 常用类

    第13 章常用类-目录 13.1 包装类 13.1.1 包装类的分类.包装类和基本数据的转换.案例演示.课堂测试 13.1.2 包装类型和String 类型的相互转换 13.1.3 Integer 类 ...

  3. Java学习笔记13

    Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中hashC ...

  4. Java学习笔记-----comparable和comparator使用方法

    我不知道是为啥,最近特别想写博客,在这里不仅仅能复习,还可能在写的同时,想到新的东西,感觉很棒,所谓温故而知新吧! 那么开始今天的话题:在之前有一篇博客写到对一个对象排序的程序段,在那个里面提到了co ...

  5. Java学习笔记2:使用replaceAll()方法替换字符串中的反斜杠:左斜杠(\)和右斜杠(/)

    在编程过程中,需要将一个字符串中的反斜杠(\)全部替换成(\\),很简单的操作但是很容易报错. 比如:String filePath  =  "D:\daxiang\test\daxiang ...

  6. java学习笔记——第八章 类和方法(二)

    8.4使用方法 java中的方法不能独立存在,他必须属于一个类或者一个对象,因此方法也不能像函数那样被独立执行.因此必须使用类或对象来调用. 总结: 方法不能独立定义,方法只能在类体中定义. 逻辑上讲 ...

  7. Java学习笔记之equals和Objects.equals

    equals 相信大家就知道,就是比较,我们平时也会在自己定义的类中加入自己重写的equals用来比较两个类是否相同,例如这样 public class Person {private String ...

  8. java学习笔记13:正则表达式、System类、Date类、Calendar类

    一.正则表达式 1.概述:是指一个用来描述或者匹配一系列符合某个句法规则的字符串:其实就是一种规则,有自己特殊的应用. 2.正则表达式的组成规则 (1).字符 表达式 代表含义 x 字符 x.举例:' ...

  9. 2022年Java学习笔记目录

    一.2022年Java任务驱动课程 任务驱动,统摄知识点:2022年Java程序设计讲课笔记 二.2022年Java学习笔记 (一)踏上Java开发之旅 Java学习笔记1.1.1 搭建Java开发环 ...

最新文章

  1. 水平居中布局与滚动条跳动
  2. ABAP function group和Tomcat library重复加载问题
  3. 4、Cocos2dx 3.0三,找一个小游戏开发Hello World 分析
  4. 内容分发系统MediaEW:助新闻媒体转投HTML5
  5. (翻译)Entity Framework技巧系列之一 - Tip 1 - 5
  6. pip离线下载安装依赖包,及github包,及常用pip源
  7. oa服务器维护问题,OA系统数据面临的安全问题及解决方法
  8. 2022最新版影视小程序源码支持josn官解+卡密系统
  9. PS在园林计算机辅助设计中有哪些应用,风景园林计算机辅助设计(谷永丽)(第2版)...
  10. Flex应用性能优化
  11. Lena,Pepper等图像,图像处理必备资料。
  12. TensorFlow学习笔记(3)——TensorFlow实现Word2Vec
  13. 如何在SendWS做到WhatsApp客服系统,WhatsApp云控客服系统有作用?为什么选择WhatsApp做海外营销推广?
  14. 【程序员如何买基金 九】基金定投的优势
  15. mybatis 父子级树形结构查询
  16. bootstrap-table的refresh查询
  17. tp3.2版本路由设置
  18. 进程、线程和协程(进阶篇)
  19. 建模simulink - xpc接口说明
  20. Python中定义函数的关键字是什么?一起来学习下吧

热门文章

  1. solr的认识、linux下安装、java下使用(含下载资源)
  2. 20162309单步追踪数组及查找课下补分博客
  3. hdu 1022 Train Problem I(栈)
  4. 使用.net调用java的Web Services
  5. jpa单向多对一关联映射
  6. OOP三大特性之多态
  7. luogu P1064 金明的预算方案
  8. python之异常处理
  9. Solidworks输出Autocad的DWG格式乱码怎么办
  10. 使用 Docker 搭建 Tomcat 运行环境