首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >equals for String vs equals for Employee/othr类

equals for String vs equals for Employee/othr类
EN

Stack Overflow用户
提问于 2016-08-04 12:53:23
回答 4查看 71关注 0票数 0
代码语言:javascript
复制
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需要帮助!!

EN

回答 4

Stack Overflow用户

发布于 2016-08-04 13:09:59

在第一种情况下,您检查的是

在第二种情况下,您正在检查employee的对象。

,因为两个对象具有不同的内存地址。

more details

票数 0
EN

Stack Overflow用户

发布于 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)

票数 0
EN

Stack Overflow用户

发布于 2016-08-04 13:14:39

该示例之所以能够正常工作,是因为String重写了equals方法来检查字符串的内容,而Employee类使用Object.equals方法来检查内存位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38758721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档