经常听到不少人说,在基础面试中,会被问及“关于'=='与equals中的区别”
而不少人都是回答:"关于‘==’是只负责基本数据类型比较,和引用对象地址比较,而equals则是比较两个对象间的内容是否一样"。甚至否写面试题目的答案中也是以此作为答案。
这答案当然不是全部错误,但是有相当一部分是误区,
每个类都是使用Object作为超类的,所有对象(包括数组)也实现这个类方法。
对于Object类的equals方法如下:
public boolean equals(Object obj) {
return (this == obj);
}
即是说关于一个普通类,没有作出覆盖equals方法时,该类的比较"=="与equals操作的结果是相同的。
而为什么再字符串中比较,我们强调要使用equals来比较内容,使用“==”会比较是否为同一对象。
是因为在String中equals方法已经覆盖如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
根据字符串中的每一个字符作出比较(字符比较相当于基础数据类型比较)
而对于hashCode()是否要覆盖,
主要是在集合类中使用,例如set中为了保持唯一性,判断一个对象是否相等的时候,除了通过equals的值外,还需要通过判断hashCode是否相等
即:
对象相等,必然hashCode都应该相等
hashCode相等,对象未必相等。
文章若有错误,敬请指正,谢谢。
希望更多人把时间花在生活、陪家人和女朋友身上,而不是敲代码上。
分享到:
相关推荐
==运算符和Equals()方法区别,从网上找到的,大家看一看吧~
关于Java中==的用法与equals的用法,醉重要的是比较它们的不同之处
java中比较值大小,==和equals的区别,基本数据类型和引用数据类型比较值方法
String中==与equals区别验证
==和equals方法究竟有什么区别? == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。 ...
简单介绍java中的“==”和equals
详细介绍和讲解Java中的==和equals区别
能够加强对java中equals与==区别的理解。
主要介绍了java基础之 “==”与“equals”区别详解,需要的朋友可以参考下
接触c#一年了,一直没搞懂“==”和equals之间的具体区别,今天特意研究了一番,终于豁然开朗了,高兴中!给大家分享
最近在学习Java程序设计,学到“==”和Object类中的equals()方法的时候有点混乱。 上结论!!! “==”:用于判断二者是否同一,即二者的引用变量是否指向同一个对象。 Object.equals():用于判断二者是否相等,即...
前言 对于开发的程序员小伙伴,...equals:在Object中模式采用==比较,通常会重写 String对象重写了 equals,比较的是变量值 从上面我们笼统的来说明了一下两者的不同,那么接下来我们看看具体的区分 对象类型的比较
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。...equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
1.“==”和Equals两个真的有关联吗? 对于“==”和Equals大多数网友都是这样总结的: “==” 是比较两个变量的值相等。 Equals是比较两个变量是否指向同一个对象。 public class Person { public ...
知识点 比较运算符==和equals方法的比较 知识点 比较运算符==和equals方法的比较
Java中的==与equals()实例方法Java中测试两个变量是否相等的方法有两个,一个是用==运算符,另一个就是object类提供的equals()方法。2
在本文中,我们将讨论“ ==”与“ .Equals in C#”之间的区别。
java中的比较运算符== 与 equals()方法 值类型、引用类型
主要介绍了Java中==与equals的区别小结,本文总结结论:== 与 equals()比较的内容是不同的,equals()方式是String类中的方法,它用于比较两个对象引用所指的内容是否相等,而 == 比较的是两个对象引用的地址是否相等,...
NULL 博文链接:https://tonysmith.iteye.com/blog/1440129