==与equals的区别

简介: ==用于比较两个变量的值是否相等,也就是比较两个变量对应的内存中的数值是否相同。当比较两个基本数据类型或判断两个引用变量是否指向同一个对象时,应该采用==操作符。

==用于比较两个变量的值是否相等,也就是比较两个变量对应的内存中的数值是否相同。当比较两个基本数据类型或判断两个引用变量是否指向同一个对象时,应该采用==操作符。

当一个引用变量指向一个对象类型时,此时涉及到两块内存。一个是对象自身的内存,另一个是这个变量的内存。比如Object o = new Object();new Object()是一块内存,而这个变量o是另一块内存,其保存的值就是这个对象所占用的内存的首地址。因此如果要判断两个引用变量是否指向同一个对象时,应该采用==操作符。

equals用于比较两个独立对象的内容是否相同。比如如下代码:
String a = new String("abc");

String b = new String("abc");这里a 指向一块内存,而b指向另一块内存。因此表达式a==b将返回false。而a.equals(b)返回true,因为a、b所指向的两个内存空间的内容是相同的。

当我们自定义了某个类,但没有重写Object的equals方法时,会默认采用Object的equals方法。Object的equals方法内部其实是采用==操作符的。也就是说如果我们创建了这个类的两个相同内容的实例对象,即便我们使用equals方法进行比较,也会返回false。所以我们应该根据实际需要重写这个方法。

目录
相关文章
|
1月前
|
Java
== 和 equals 有什么区别?
本文解释了在Java中,"=="用于比较基本数据类型的值或引用类型的引用是否相等,而"equals"默认也是比较引用,但常常被重写为比较对象的值是否相等,例如在String和Integer类中,并且提供了如何自定义"equals"方法的示例。
77 0
== 和 equals 有什么区别?
|
3月前
|
Java
“a == b” 和 “a.equals(b)” 的区别
【8月更文挑战第22天】
58 0
|
5月前
|
存储 Java
equals与==区别
equals与==区别
40 0
equals 和 == 的区别?
equals 和 == 的区别?
81 0
|
Java
== 和 equals 的区别是什么
== 运算符用于比较两个对象的引用是否相等。它对于基本类型比较值的相等性,对于引用类型比较引用的相等性。当使用 == 比较两个对象时,它会检查它们是否指向相同的内存地址。如果两个对象具有相同的内存地址,则它们被认为是相等的。
70 1
|
Java
==和equals()
==和equals()
76 0
equals和 == 的区别
equals和 == 的区别
81 0
|
存储 Java
详解“==”和equals的区别
“==”和equals 最大的区别是 “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。
|
存储 Java
“==”和equals 最大的区别
“==”和equals 最大的区别是 “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。