4,关于判断两个变量相等的问题
来源:互联网 发布:约瑟夫环c语言视频 编辑:程序博客网 时间:2024/06/05 07:16
(1)最常用的是==和equals,==多用于比较基本变量,equals是Object中的方法,判断两个对象是否具有相同的引用。但是他的子类可以根据自身实际情况进行覆盖,如String类中,==用来比较两变量内存地址是否相同,equals比较两变量内容是否相同;但是在别的未覆盖equals方法的类中,即使两对象内容完全相同equals比较的结果仍然是返回false.对于equals只要知道在比较字符串内容时使用就行了。
(2)Java中对于equals方法要求所具有的特性:
1)自反性:对于非空引用x,x.equals(x)应该返回true
2)对称性:如果x.equals(y)返回true,那么y.equals(x)返回true
3)传递性:x.equals(y)为true,y.equals(z)为true,则x.equals(z)为true
4)一致性:如果x,y引用的对象没有发生变化,反复调用equals的返货结果应该相同
5)对于任意非空引用x,x.equals(null)应该返回false
先给出完美的equals方法:(比较对象为otherObject)
1)监测本类对象与otherObject是否引用同一对象(比起直接检测各个域要节约成本)
if(this==otherObject) return true;
2)检测otherObject是否为full
if(otherObject==null) return false;
3)比较this与otherObject是否为同一类:
if(getClass()!=otherObject.getClass()) return false;
4)将otherObject转换为相应的类类型变量
Classname other=(ClassName) otherObject
5)比较所有需要进行比较的域:
return field1==otherObject.field1&&field2==otherObject.field2&&.......
6)在子类中定义equals方法时先调用super.equals(other).
注意:该方法声明时为:public boolean equals(Object otherObject)才能覆盖Object中的equals方法,而出于一般逻辑此时很可能将形参声明为本类类型public boolean equals(本类类型 otherObject),这时该方法是一个与Object equals方法完全无关系的方法,形成了重载。此时可以在语句前面用@Override进行标记,则编译器就会对未达到覆盖目的方法报错。
关于上述第三步,还有另一个方法可以实现:if(!(otherObject instanceof ClassName)) return false;这两个方法由于java对于equals方法的限制各有局限性,可根据以下建议来选择合适的方法:如果子类拥有自己的相等概念(相等要求的内容中包含子类特有的域),那么对称性要求采用getClass方法;如果相等概念由超类决定,那么使用instanceof进行检测。
0 0
- 4,关于判断两个变量相等的问题
- 关于判断C#的两个string是否相等的问题
- 判断两个变量/向量/集合的相等性质
- 关于判断字符串是否相等的问题
- js 判断两个变量是否相等
- javascript 判断两个变量是否相等
- js 判断两个变量是否相等
- js 判断两个变量是否相等
- 怎么判断两个cstring变量是否相等?
- 判断两个String 相等时出现的问题
- 【知识】java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- java中判断两个字符串是否相等的问题
- JavaScript彩色小球随机运动的效果分享
- Opencv中的颜色检测
- 安装 Docker
- IOS - 关于UITableView的用法
- JAVA——第一章——开发环境搭建
- 4,关于判断两个变量相等的问题
- JavaScript 匿名函数几种执行方式
- PHP---继承和接口
- xml 简单学习总结
- HOJ题目分类
- 简单背包问题<枚举>
- 基本数据类型对象包装类
- 自旋锁--Test and Set Clock机制分析
- Intersection of Two Linked List ---LeetCode