Java重写equals()方法

摘要:
您不必手动编写~

java比较两个对象是否相等时,equals()方法判断的是引用,即地址是否相同,而常常我们想要判断的是对象里的值是否相等,此时可以重写equals()方法

设定一个类User.java(重写equals()方法)

/*** 为了方便把属性都设置成public,正式写代码要写成private,再set,get
 */
public classUser {
    publicString id;
    publicString money;
    //重写equals方法:该写法可以作为一种模板
    public booleanequals(Object obj){
        if(this == obj){ //先判断是否是同一个对象
            return true;
        }
        if(obj == null){ //如果不是同一对象,接着判断对象是否为空
            return false;
        }
        if(!(obj instanceof User)){ //接着判断是不是Course类型的对象
            return false;
        }
        User user = (User)obj; //如果是,进行类型转换
        if(this.money==null){ //接着判断属性值是否为null
            if(user.money==null){
                return true;
            }else{
                return false;
            }
        }else{ //如果属性值不是null,需要再调用父类中的equals方法,比较值的内容
            if(this.money.equals(user.money)){
                return true;
            }else{
                return false;
            }
        }
    }

}

测试类:UserTest.java

public classUserTest {

    public static voidmain(String[] args) {
        //TODO Auto-generated method stub
        User user1=newUser();
        user1.id="1";
        user1.money="10";
        User user2=newUser();
        user2.id="1";
        user2.money="10";
        System.out.println("比较两个对象是否相等结果:"+user1.equals(user2));
    }
}

返回结果为true

若是去掉重写的equals()方法,则返回值为false

注意:!!!!!其实eclipse中选择source——>Generate HashCode() equals()就可以自动生成重写代码。。。就不用手动写了~

免责声明:文章转载自《Java重写equals()方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue项目发布注意事项redmine 安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

python爬取图片遇见src乱码: data:image/png;base64

Python抓取图像并遇到src乱码:data:image/png;Base64会抓取您喜欢的图像,但图像的src在抓取的代码中出现了乱码:data:image/png;base64.)“”头1,编码=字符串。splitdata=b64decodedwithopenasf:f.写入。close()注意:我还没有成功。。。。。。...

ubuntu 常见安装软件错误

安装xlibs dev.2。错误:apt-get-installlibqt3-headers libqt3-mt-dev3。错误:这基本上意味着它要安装许多KDEspecificpackagestowork。这个'configure:aapt-get-installbuild essential7。错误:...

Oracle 12c新特性(For DBA)

2: Oracle12cIn-MemoryOracle12cIn-Memory提供了一种独特的双格式体系结构,它可以使用传统的行格式和新的内存列格式同时在内存中存储表。与其他NOSQL分片结构相比,OracleSharding提供了优异的运行时性能和更简单的生命周期管理。OracleSharding使用GDS体系结构自动部署和管理分片和复制技术。GDS还提供...

Linux系统添加永久静态路由的方法

按照Linux启动的顺序,rc本地的内容在Linux中的所有服务启动后执行。也就是说,local的内容在netfs之后执行。也就是说,当netfs启动时,不会添加服务器上的静态路由,因此无法成功装载netfs。...

OA办公系统 Springboot vue.js 前后分离 跨域 Flowable 工作流

1.模型管理:web在线流程设计器,预览流程xml,导出xml,部署流程2.流程管理:导入和导出流程资源文件,查看流程图,根据流程实例反映流程模型,激活和挂起,自由跳转3.运行流程:查看流程信息,当前任务节点,当前流程图,作废和挂起流程,并分配待办事项人员4.历史流程:查看流程信息、流程时间流程状态、查看任务发起人信息5.待办任务:查看您的个人任务和此角色下...

Windows 远程桌面连接ubuntu及xrdp的一些小问题(远程桌面闪退、连接失败、tab补全功能,无菜单栏,error

想要修改,在windowsmanager中,keyboard里将用到Super+Tab的快捷键clear掉即可。解决:通过设置sesman.in文件内的参数解决:cat/etc/xrdp/sesman.inivi/etc/xrdp/sesman.ini可以修改会话设置:将最大会话限制该大MaxSessions=50;将KillDisconnected=1;则...