一、对象的比较
在之前如果是两个数值的比较“==”,如果是字符串的比较一般用“equals()" 方法,这个方法是String 类自己提供的,如果是我们自定义的类的对象怎么进行比较,如果使用“==”比较则比较的是两个对象的地址信息,但是我们正常思维认为两个对象的所有属性值相等两个对象就相等。
DEMO:比较自定义类的对象
![](https://upload-images.jianshu.io/upload_images/19872357-ecf4494d049271d0.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-c4d8eb6808236e21.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-f4f17f2eacf750b1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-bbacbc7190a63e76.png?imageMogr2/auto-orient/strip|imageView2/2/w/730/format/webp)
以上可以实现对象比较,但是是在主方法中实现的,一般要求主 方法中尽量不要出现逻辑业务代码,主方法就是一个客户端,最好将比较的过程交给Dept类去完成。
DEMO:在Dept中定义方法实现对象的比较
![](https://upload-images.jianshu.io/upload_images/19872357-559da749c4464d98.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-2b467fa2bc48264e.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-1183c79a9d63c8e8.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-19f8c8d366372c22.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-7a2e49504d2f3fdb.png?imageMogr2/auto-orient/strip|imageView2/2/w/849/format/webp)
以上代码可能出现对象自己和自己比较的情况,这种代码是没有意义,所以需要改进代码。
DEMO:防止对象自己和自己比较
![](https://upload-images.jianshu.io/upload_images/19872357-ede075440556b765.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
以上的代码还有问题,可能比较的对象是空对象,所以会出现空指针异常,那么代码还需要改善。
DEMO:防止空对象的比较
![](https://upload-images.jianshu.io/upload_images/19872357-19c3f26566e859a7.png?imageMogr2/auto-orient/strip|imageView2/2/w/720/format/webp)
![](https://upload-images.jianshu.io/upload_images/19872357-1c501ae814e7f10b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
总结:
1、自定义对象的比较只能两个对象都是同一个类创建的才有意义。
2、比较的时候要判断是否是空对象。
3、比较的时候要判断是不是对象和自己进行比较。
有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!
欢迎关注微信公众号:码邦主