Object类的equals方法
equals方法
很多面试题都会问equals方法
和 ==
运算符的区别,== 运算符用于比较基本类型的值是否相同,或者比较两个对象的引用是否相等,而equals用于比较两个对象是否相等,这样说可能比较宽泛,两个对象如何才是相等的呢?这个标尺该如何界定?首先来看Object类中的equals方法:
public boolean equals(Object obj) {return (this == obj);}
可以看到,在Object类中,
==运算符和equals方法是等价的
,都是比较两个对象的引用是否相等,从另一方面来讲,如果两个对象的引用相等,那么这两个对象一定是相等的。对于自定义的一个对象,如果不重写equals方法,那么在比较对象的时候就会调用Object类的equals方法,也就是用 == 运算符比较两个对象
。接着来看String类中的重写的equals方法:
public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}
String是引用类型,比较时不能比较引用是否相等,而是比较字符串的内容是否相等
。所以String类定义两个对象相等的标准是字符串内容都相同。
在Java规范中,对equals方法的使用必须遵循以下几个原则:
1)自反性。对于任何非空引用值x,x. equals(x)都应返回true。
2)对称性。对于任何非空引用值x和y,当且仅当y. equals(x)返回true时,x.equals(y)才应返回true。
3)传递性。对于任何非空引用值x、y和z,如果x. equals(y)返回true,并且y.equals(z)返回true,那么x. equals(z)应返回true。
4)一致性。对于任何非空引用值x和y,多次调用x. equals(y)始终返回true或始终返回false,前提是对象上equals比较中所用的信息没有被修改。
总结
- 自定义类有时候有必要写equals方法
Object类的equals方法相关推荐
- 《Java 核心技术卷1 第10版》学习笔记------Object类的 equals 方法
Object 简述 Object 类是 Java 中所有类的始祖, 在 Java 中每个类都是由它扩展而来的. 在 Java 中, 只有基本类型 ( primitive types) 不是对象, 例如 ...
- 重写Object类的equals方法
package com.learn.demo01.Object;import java.util.ArrayList;public class Demo02Equals {public static ...
- Java基础Object类的equals方法
关于Object类中的equals方法 1.equals方法的源代码 public boolean equals(Object obj) {return (this == obj);}以上这个方法是O ...
- JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能
JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...
- Java重写object类的equals方法
1.Object类的equals()方法: 比较两个对象是否是同一个对象,equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等.是则返回tru ...
- java——API—— Object类——重写equals方法
重写Object类的equals方法 如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法. Object类的equals方法,默认比较的是两个 ...
- java 对象重写equals方法_Java如何重写object类的equals方法详解
1.Object类的equals()方法: 比较两个对象是否是同一个对象,equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等.是则返回tru ...
- 【宋红康学习日记11】Object类与equals方法
1 == (1)当对象是基本数据类型时,比较值: (2)当对象是引用型时,比较的是地址值!!1 2 equals():只处理引用型数据:Object类中的equals方法依然比较的是地址值! 但在St ...
- Object类—复写equals方法,hashCode方法,toString方法
Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. class Person extends Object {private int age;Person(in ...
最新文章
- C#语言与面向对象技术(6)
- 【命令】usemod 的用法
- Hibernate【XXXX.hbm.xml】总结
- 小豆包的学习之旅:里程计运动模型
- vc通过COM方式调用CertEnroll
- 蛋白质组学和代谢组学方法在生物标志物发现中的应用 Proteomic and Metabolomic Approaches to Biomarker Discovery
- spring cloud Alibaba 的 Nacos学习笔记
- linux系统安装python包_Linux系统安装Python
- Gurobi建模遇到的坑
- HTML是由____构成的____文件,JSP填空题
- 如何查看本机IP地址?
- python日历教程_基于python实现简单日历
- 【网络空间安全数学基础第8章】环和域
- css 全局撑开页面
- Ant Design Icon图标使用
- 关于Android中使用WebView播放网络视频不能全屏的问题
- 20210212【学习笔记】Python初步
- Linux 修改用户名
- 指责TD的人几个是有资格的?--艾瑞网专家项立刚的博客专栏 - 艾瑞网
- 计算机科学与技术中文核心期刊