在java里面object equals()的概念是两个引用指向的是同一个对象即两者指向同一个对象才equals()但是也有特例比如说一些原始类型integerstring等属于值相等就是说值相等也就equals()了实际上他们都改写了object的equals()方法但是类型安全的值类不需要改写equals() 还有当我们当前的类有特定的相等的定义的时候而且我们的超类并没有改写equals()方法就需要改写equals()方法了 改写的规范-object必须满足 . 自反 . 对称 . 传递 . 一致 . X非空xequals(null)返回false 为了实现高质量的equals()改写effective java提醒我们要注意一下几点 . 使用==操作符检查是否指向同一个对象这是一个性能优化的手段 . 使用instanceof来检查是否为某个类同样也是性能优化的手段 . 把实参转换到正确的类型上面一步保证了这一步不会有错误 . 检查类里的每一个关键域是否都相等 还有要注意的就是改写equals()方法的同时都要改写hashcode方法 |