Java 中的 String.equals() 方法2025年9月1日 | 阅读 6 分钟 equals() 方法定义在 String 类中。它用于比较两个对象的**内容和区分大小写**,而不是它们的内存地址(与 == 运算符不同,后者比较引用)。这是一个快速简便的方法,用于检查两个字符串的内容是否匹配。请注意,该方法重写了 Object 类的 equals() 方法。 签名参数:该方法接受一个对象作为参数。 返回值:如果两个字符串的字符相等,则返回 true,否则返回 false。 默认情况下,String.equals() 的行为与 == 相同,但可以在用户定义的类中重写它以进行逻辑值比较。 内部实现示例:String.equals() 方法示例编译并运行输出 true false false 说明 该代码使用 equals() 方法比较字符串 s1 与 s2,s1 与 s3,以及 s1 与 s4。由于两个字符串内容相同,第一次比较返回 true;但第二次比较由于两个字符串的大小写不同而返回 false。S1 和 S4 内容的差异导致第三次比较结果无效。 程序 1:在集合中使用 String.equals() 方法示例编译并运行输出 ANDREW is Present 说明 在上面的 Java 代码中,我们创建了一个名为 list 的 ArrayList,其中包含许多字符串,并初始化一个名为 str1 的 String 变量,其值为“ANDREW”。然后,使用 for-each 循环遍历列表中的元素,使用 String.equals() 方法将每个条目与“ANDREW”进行比较。如果检测到匹配,程序将打印“ANDREW is Present”。该代码通过有效地检查列表中是否存在“ANDREW”并提供相应的反馈,演示了在集合中进行字符串比较时使用 String.equals() 方法。 程序 2:比较各种数据类型的引用示例编译并运行输出 false false false false true true true true 说明 上述 Java 程序比较了各种数据类型(如 Character、Integer、Float 和 Boolean)与 String 对象的引用。由于 equals() 方法期望相同类型 else 对象,因此比较最初返回 false。然而,在将非 String 数据类型转换为 String 后,比较正确地返回 true,这突显了在 Java 中进行精确字符串比较时数据类型兼容性的重要性。 程序 3:重写 String.equals() 方法示例编译并运行输出 true false 说明 该程序演示了如何在用户定义的类中重写 String.equals() 方法,以允许对对象内容进行逻辑比较而不是引用。Sample 类重写了 equals() 方法以比较两个 Sample 对象的 value 字段。在 main() 方法中,尽管 s1 和 s2 是不同的对象,但 s1.equals(s2) 返回 true,因为它们具有相同的值(10);而 s1.equals(s3) 返回 false,因为它们的值不同。 程序 4:使用 String.equals() 方法和 == 运算符比较字符串示例编译并运行输出 false true 说明 该程序演示了在 Java 中比较 String 对象时 == 运算符和 String.equals() 方法之间的区别。== 运算符检查 str1 和 str2 是否指向内存中的同一个对象,而它们并不指向同一个对象,因为两者都是使用 new String() 创建的,因此返回 false。 另一方面,String 类重写了 equals() 方法来比较字符串的实际内容,因此 str1.equals(str2) 返回 true,因为两个字符串都包含相同的字符序列:“Java”。 程序 5:将 String.equals() 与 null 一起使用示例编译并运行输出 false true false 说明 该程序演示了 Java 中的 String.equals() 方法如何根据值和类型进行比较。当比较字符串“Hello”与 null 时,equals() 会安全地返回 false,而不会抛出错误。当将其与包含相同字符的另一个字符串进行比较时,它会返回 true,因为值完全匹配。 但是,当将其与整数 (100) 进行比较时,equals() 返回 false,因为数据类型不同,并且 String 不认为其他类型的对象相等,即使它们不是 null。 要记住的重要事项
结论Java String 类中的 **String.equals()** 方法是比较字符串内容的关键工具。它使开发人员能够确定两个字符串是否包含相同的字符,从而有助于各种字符串操作任务。通过理解其用法和注意事项,开发人员可以在其 Java 程序中有效地使用此方法。 String.equals() 方法选择题Q1. 默认情况下,如果未重写,String.equals() 方法会比较什么?
答案: A 解释:默认情况下,Object 类中的 equals() 方法就像 == 运算符一样,比较对象引用。 Q2. 以下代码的输出是什么?
答案: A 解释:String 类重写了 equals() 方法来比较内容,而不是引用。由于两个字符串都包含“Java”,equals() 返回 true。 Q3. 关于重写 equals(),以下哪个陈述是正确的?
答案:C 解释:重写 equals() 方法允许开发人员定义两个对象基于其内容(而不是内存地址)“相等”的含义。 Q4. 当 String str = "Hello" 时,str.equals(100) 会返回什么?
答案: B 解释:equals() 方法会检查类型兼容性。由于 100 是 Integer 而不是 String,因此该方法返回 false。 Q5. 重写 equals() 方法时,理想情况下还应该重写哪个其他方法?
答案: D 解释:根据 equals() 和 hashCode() 之间的约定,如果两个对象被 equals() 认为相等,那么它们必须具有相同的 hashCode()。因此,为了保持一致性,两者都应一起重写,尤其是在哈希集合中使用时。 |
我们请求您订阅我们的新闻通讯以获取最新更新。