Java学习笔记13(equals()方法;toString()方法)
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()方法)相关推荐
- JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类
一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...
- java学习笔记(13) 第13章 - 常用类
第13 章常用类-目录 13.1 包装类 13.1.1 包装类的分类.包装类和基本数据的转换.案例演示.课堂测试 13.1.2 包装类型和String 类型的相互转换 13.1.3 Integer 类 ...
- Java学习笔记13
Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中hashC ...
- Java学习笔记-----comparable和comparator使用方法
我不知道是为啥,最近特别想写博客,在这里不仅仅能复习,还可能在写的同时,想到新的东西,感觉很棒,所谓温故而知新吧! 那么开始今天的话题:在之前有一篇博客写到对一个对象排序的程序段,在那个里面提到了co ...
- Java学习笔记2:使用replaceAll()方法替换字符串中的反斜杠:左斜杠(\)和右斜杠(/)
在编程过程中,需要将一个字符串中的反斜杠(\)全部替换成(\\),很简单的操作但是很容易报错. 比如:String filePath = "D:\daxiang\test\daxiang ...
- java学习笔记——第八章 类和方法(二)
8.4使用方法 java中的方法不能独立存在,他必须属于一个类或者一个对象,因此方法也不能像函数那样被独立执行.因此必须使用类或对象来调用. 总结: 方法不能独立定义,方法只能在类体中定义. 逻辑上讲 ...
- Java学习笔记之equals和Objects.equals
equals 相信大家就知道,就是比较,我们平时也会在自己定义的类中加入自己重写的equals用来比较两个类是否相同,例如这样 public class Person {private String ...
- java学习笔记13:正则表达式、System类、Date类、Calendar类
一.正则表达式 1.概述:是指一个用来描述或者匹配一系列符合某个句法规则的字符串:其实就是一种规则,有自己特殊的应用. 2.正则表达式的组成规则 (1).字符 表达式 代表含义 x 字符 x.举例:' ...
- 2022年Java学习笔记目录
一.2022年Java任务驱动课程 任务驱动,统摄知识点:2022年Java程序设计讲课笔记 二.2022年Java学习笔记 (一)踏上Java开发之旅 Java学习笔记1.1.1 搭建Java开发环 ...
最新文章
- 水平居中布局与滚动条跳动
- ABAP function group和Tomcat library重复加载问题
- 4、Cocos2dx 3.0三,找一个小游戏开发Hello World 分析
- 内容分发系统MediaEW:助新闻媒体转投HTML5
- (翻译)Entity Framework技巧系列之一 - Tip 1 - 5
- pip离线下载安装依赖包,及github包,及常用pip源
- oa服务器维护问题,OA系统数据面临的安全问题及解决方法
- 2022最新版影视小程序源码支持josn官解+卡密系统
- PS在园林计算机辅助设计中有哪些应用,风景园林计算机辅助设计(谷永丽)(第2版)...
- Flex应用性能优化
- Lena,Pepper等图像,图像处理必备资料。
- TensorFlow学习笔记(3)——TensorFlow实现Word2Vec
- 如何在SendWS做到WhatsApp客服系统,WhatsApp云控客服系统有作用?为什么选择WhatsApp做海外营销推广?
- 【程序员如何买基金 九】基金定投的优势
- mybatis 父子级树形结构查询
- bootstrap-table的refresh查询
- tp3.2版本路由设置
- 进程、线程和协程(进阶篇)
- 建模simulink - xpc接口说明
- Python中定义函数的关键字是什么?一起来学习下吧