Java 中使用 == 和 .equals() 方法比较 String 的区别

10 Sept 2024 | 4 分钟阅读

在 Java 中比较字符串时,理解 == 运算符和 .equals() 方法的区别非常重要。

在 Java 中,字符串是对象,比较对象需要考虑是想比较它们的引用(内存地址)还是实际内容。

== 运算符用于检查引用相等性。它比较两个字符串对象的内存地址,以确定它们是否指向内存中的同一个位置。如果两个字符串对象引用相同的内存地址,== 将返回 true,表示对象相等。

.equals() 方法在 Java 中用于比较两个字符串对象的实际内容,侧重于它们包含的字符序列,而不是考虑引用或内存地址等其他因素。它检查两个字符串中的字符是否相同。如果字符串的内容相同,.equals() 将返回 true,表示对象相等。

  1. 在 .equals() 方法和 == 运算符之间的区别在于它们的性质:一个是方法,另一个是运算符。
  2. 我们通常使用 == 运算符进行引用比较,而 .equals() 方法用于内容比较。
  3. 即使类没有重写 equals 方法,它也会自动使用最近的父类中重写了此方法的 equals(Object o) 方法。

文件名: StringComparisonExample.java

输出

true
false
true
true

相等运算符(==)

当用于比较字符串时,相等运算符会比较字符串对象的引用(内存地址)而不是它们的内容。它确定两个字符串对象是否指向完全相同的内存位置。如果引用相同,则返回 true,表示它们指向相同的内存地址,否则返回 false。它主要用于比较基本类型和对象引用。

文件名: EqualityOperatorExample.java

输出

true
false
true

.equals() 方法

Java 中的 .equals() 方法定义在 Object 类中,它是 Java 中所有对象的根类。它比较两个对象的内容(值)是否相等。 .equals() 方法的主要目的是根据对象的内部状态确定两个对象是否在语义上等价。

文件名: EqualsMethodExample.java

输出

true
true
false
false

Java 中使用 == 和 .equals() 方法比较字符串的区别表

比较方面== 运算符.equals() 方法
比较基础检查对象的内存地址是否相等。比较对象的内容(值)。
用途适用于所有数据类型。专门用于比较对象,包括字符串。
比较结果如果对象具有相同的地址,则返回 true。如果对象具有相同的内容,则返回 true。
字符串内容比较不适合比较字符串内容。适合比较字符串内容。
对象内容比较比较对象引用,而不是它们的内容。比较对象的内容,考虑它们的内部状态。
调用方式== 在 Java 中被视为一个运算符。Equals() 在 Java 中被视为一个方法。