== 和 equals 的区别是什么

简介: == 运算符用于比较两个对象的引用是否相等。它对于基本类型比较值的相等性,对于引用类型比较引用的相等性。当使用 == 比较两个对象时,它会检查它们是否指向相同的内存地址。如果两个对象具有相同的内存地址,则它们被认为是相等的。

在Java中,== 和 equals() 是用于比较对象的两个不同的方法。

== 运算符用于比较两个对象的引用是否相等。它对于基本类型比较值的相等性,对于引用类型比较引用的相等性。当使用 == 比较两个对象时,它会检查它们是否指向相同的内存地址。如果两个对象具有相同的内存地址,则它们被认为是相等的。

例如:

java

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1 == str2); // true,因为它们指向相同的内存地址
System.out.println(str1 == str3); // false,因为它们指向不同的内存地址

equals() 方法用于比较两个对象的内容是否相等。默认情况下,equals() 方法继承自 java.lang.Object 类,其行为与 == 运算符相同,即比较对象的引用是否相等。但是,很多类(如 String、Integer 等)会重写 equals() 方法,以便比较对象的内容是否相等。

例如:

java

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1.equals(str2)); // true,因为它们的内容相等
System.out.println(str1.equals(str3)); // true,因为它们的内容相等

需要注意的是,如果要比较自定义类的对象内容是否相等,通常需要重写 equals() 方法。默认情况下,equals() 方法会使用 == 运算符进行引用相等性比较。但是,这通常不是我们所期望的,因为我们想要比较对象的状态而不是引用。因此,在自定义类中,我们应该根据对象的实际属性和逻辑来重写 equals() 方法,以便实现正确的内容比较。

综上所述,== 运算符用于比较两个对象的引用相等性,而 equals() 方法用于比较两个对象的内容相等性。对于基本类型,可以使用 == 运算符进行值相等性的比较。对于引用类型,通常需要使用 equals() 方法来比较内容相等性,但需要注意自定义类需要适当重写 equals() 方法。

相关文章
|
1月前
|
Java
== 和 equals 有什么区别?
本文解释了在Java中,"=="用于比较基本数据类型的值或引用类型的引用是否相等,而"equals"默认也是比较引用,但常常被重写为比较对象的值是否相等,例如在String和Integer类中,并且提供了如何自定义"equals"方法的示例。
72 0
== 和 equals 有什么区别?
|
1月前
|
C# 开发者
【捞底干货】C#中equals和==运算符的区别
【捞底干货】C#中equals和==运算符的区别
26 1
|
3月前
|
Java
“a == b” 和 “a.equals(b)” 的区别
【8月更文挑战第22天】
56 0
|
5月前
|
存储 Java
equals与==区别
equals与==区别
39 0
equals 和 == 的区别?
equals 和 == 的区别?
79 0
|
Java
==和equals()
==和equals()
73 0
equals和 == 的区别
equals和 == 的区别
77 0
|
存储 Java
详解“==”和equals的区别
“==”和equals 最大的区别是 “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。
|
存储 Java
“==”和equals 最大的区别
“==”和equals 最大的区别是 “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。