什么需要覆盖 String 类中的 equals 方法?

Aks*_*sal -5 java string overriding equals

问这个问题的原因是Java中的String是实习的所以

String s1 = "Hello";

String s2 = "Hello";
Run Code Online (Sandbox Code Playgroud)

s1 和 s2 都指向内存中的同一个对象。不会创建两个不同的对象。

s1.equals(s2)应该返回 true 并且确实如此。现在在java文档中它说String类覆盖了对象类的equals方法。但真的吗?

因为即使 String 类没有覆盖 Object.equals(),equals 方法的输出也会保持不变。

如果它确实覆盖了,为什么需要它?

Ell*_*sch 5

String覆盖equals. 简单的测试,

String a = "a";
String b = new String("a");
System.out.println(a == b); // <-- false
System.out.println(a.equals(b)); // <-- true
Run Code Online (Sandbox Code Playgroud)

QED。