对以上两个实例的总结
- 对可变类型,实现行为等价性即可(即不需要重写equals方法和hashcode方法,也就是说,只有指向相同地址空间的对象才是相等的)
- 如果 一定要判断两个可变对象是否看起来一致,一定要定义一个新的方法
- 对于不可变对象而言,equals方法应该比较的是抽象的值。这也相当于行为等价性(没有变值器)
—所以对于不可变对象而言,必须重写equals方法和hashcode方法
有关克隆
自动封装和等价性
- 原始数据类型和他们的对象数据类型的等价性。如图所示:
- 但是x==y是不成立的(因为x与y的引用是不同的)
- 但是(int)x == (int)y是成立的吗?(强制类型转换!YES!!)
- 一个典型实例如图所示(自动装箱和等价性):
- 一种特殊的情况
- 实际测试结果如图所示: