一、对象的比较
在之前如果是两个数值的比较“==”,如果是字符串的比较一般用“equals()" 方法,这个方法是String 类自己提供的,如果是我们自定义的类的对象怎么进行比较,如果使用“==”比较则比较的是两个对象的地址信息,但是我们正常思维认为两个对象的所有属性值相等两个对象就相等。
DEMO:比较自定义类的对象
![](https://img.haomeiwen.com/i19872357/ecf4494d049271d0.png)
![](https://img.haomeiwen.com/i19872357/c4d8eb6808236e21.png)
![](https://img.haomeiwen.com/i19872357/f4f17f2eacf750b1.png)
![](https://img.haomeiwen.com/i19872357/bbacbc7190a63e76.png)
以上可以实现对象比较,但是是在主方法中实现的,一般要求主 方法中尽量不要出现逻辑业务代码,主方法就是一个客户端,最好将比较的过程交给Dept类去完成。
DEMO:在Dept中定义方法实现对象的比较
![](https://img.haomeiwen.com/i19872357/559da749c4464d98.png)
![](https://img.haomeiwen.com/i19872357/2b467fa2bc48264e.png)
![](https://img.haomeiwen.com/i19872357/1183c79a9d63c8e8.png)
![](https://img.haomeiwen.com/i19872357/19f8c8d366372c22.png)
![](https://img.haomeiwen.com/i19872357/7a2e49504d2f3fdb.png)
以上代码可能出现对象自己和自己比较的情况,这种代码是没有意义,所以需要改进代码。我之前在学习过程中用到的一些学习资料整理成了文档,以及我自身之前的一个面试文案和知识点补充,有需要的可以加我的扣扣群697888503,这里也希望大家最终都能够学有所成,学习编程不是一天两天的功夫,勤能补拙才是硬道理,祝大家最终都能成为一名合适开发攻城狮。
DEMO:防止对象自己和自己比较
![](https://img.haomeiwen.com/i19872357/ede075440556b765.png)
以上的代码还有问题,可能比较的对象是空对象,所以会出现空指针异常,那么代码还需要改善。
DEMO:防止空对象的比较
![](https://img.haomeiwen.com/i19872357/19c3f26566e859a7.png)
![](https://img.haomeiwen.com/i19872357/1c501ae814e7f10b.png)
总结:
1、自定义对象的比较只能两个对象都是同一个类创建的才有意义。
2、比较的时候要判断是否是空对象。
3、比较的时候要判断是不是对象和自己进行比较。
首发于知乎:码邦主
网友评论