public class Employee {
String name;
public Employee(String var){ this.name=var;}
}
public class Main {
public static void main(String[] args){
String s1=new String("joe");
String s2=new String("joe");
Employee e1=new Employee("joe");
Employee e2=new Employee("joe");
system.out.println("When comparing String obj:"+s1.equals(s2)); output:TRUE
system.out.println("When comparing Employee obj:+e1.equals(e2)): output:FALSE我知道我们必须覆盖Employee类,但是为什么它对String类有效,而我在Oracle中找不到String类的equals覆盖方法also.Please需要帮助!!
发布于 2016-08-04 13:09:59
发布于 2016-08-04 13:13:16
如果两个字符串不为空并且包含相同的字符序列,则String.equals()将返回true。这与Object.equals()不同:如果两个引用指向内存中的同一对象,则Object.equals()返回true,请参见https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)
发布于 2016-08-04 13:14:39
该示例之所以能够正常工作,是因为String重写了equals方法来检查字符串的内容,而Employee类使用Object.equals方法来检查内存位置。
https://stackoverflow.com/questions/38758721
复制相似问题