"==" 与 “equals”
Posted yl007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了"==" 与 “equals”相关的知识,希望对你有一定的参考价值。
“==”:
“==”或等号操作在Java编程语言中是一个二元操作符,用于比较原生类型和对象。(操作符不支持重载overloading)
“==”对比两个对象基于内存引用,如果两个对象的引用完全相同(指向同一个对象)时,“==”操作将返回true,否则返回false。
“equals”:
用于检查两个对象的相等性。
默认的equals方法实现是与“==”操作一样的,基于业务需求重写equals方法是最好的实践之一,同样equals与compareTo保持一致也不足为奇,以至于存储对象在Treemap或treeset集合中时,将使用compareTo方法检查相等性,行为是一致的。
区别:
==与equals的主要区别是:==常用于比较原生类型,而equals()方法用于检查对象的相等性。
==的行为对于每个对象来说与equals()是完全相同的,但是equals()可以基于业务规则的不同而重写(overridden )。
字符串的==和equals对比
如果==和equals()用于比较对象,当两个引用地址相同,==返回true。而equals()可以返回true或者false主要取决于重写实现。最常见的一个例子,字符串的比较,不同情况==和equals()返回不同的结果。
String类型重写了equals(),比较的是两个字符串的内容。
==与equals在对象之间的对比
当你比较的两个引用指向的对象是Object的类型的时候,那么你看到的结果和==是一致的,因为默认的equals方法实现仅仅比较的内存地址。
总结:
- 使用==比较原生类型如:boolean、int、char等等,使用equals()比较对象。
- ==返回true如果两个引用指向相同的对象,equals()的返回结果依赖于具体业务实现
- 字符串的对比使用equals()代替==操作符
以上是关于"==" 与 “equals”的主要内容,如果未能解决你的问题,请参考以下文章