问答详情
源自:5-12 阶段项目

为什么这里不需要重写equals方法呢

package com.dao;


import com.po.Users;


//用户的业务逻辑类

public class UsersDAO {

    

//用户登录方法

public boolean usersLogin(Users u)

{

if("admin".equals(u.getUsername())&&"admin".equals(u.getPassword()))

{

return true;

}

else

{

return false;

}

}

}


提问者:慕神3026817 2018-08-22 13:24

个回答

  • NothingAJ
    2018-08-22 15:53:13
    已采纳

       public boolean equals(Object anObject) {

           if (this == anObject) {

               return true;

           }

           if (anObject instanceof String) {

               String anotherString = (String)anObject;

               int n = value.length;

               if (n == anotherString.value.length) {

                   char v1[] = value;

                   char v2[] = anotherString.value;

                   int i = 0;

                   while (n-- != 0) {

                       if (v1[i] != v2[i])

                           return false;

                       i++;

                   }

                   return true;

               }

           }

           return false;

       }

    代码乱了。重发


  • 慕神3026817
    2018-08-24 13:35:27

    奥!原来是String这个类里面已经重写过equals方法了。谢谢!

  • NothingAJ
    2018-08-22 15:50:51

    public boolean equals(Object anObject) {       if (this == anObject) {           return true;       }       if (anObject instanceof String) {           String anotherString = (String)anObject;           int n = value.length;           if (n == anotherString.value.length) {               char v1[] = value;               char v2[] = anotherString.value;               int i = 0;               while (n-- != 0) {                   if (v1[i] != v2[i])                       return false;                   i++;               }               return true;           }       }       return false;   }

    上面是字符串 equals() 重写后的源码,第一个判定中 

    if (this == anObject) ,当对象为字符串时,字面量相同时,两个对象指向字符串存储池的同一个位置,所以返回 true ,因此无需重写。