方法
|
注意
|
其他
|
toString |
- 对象转文本输出,所以输出时应该是有意义的
- 如:数据库对应的bean对象的主键以及关键字段信息
| |
hashCode |
-
对同一对象多次调用hashCode,必须一致的返回相同的int(前提:equals时所用得信息没有被修改)。同一应用的多次运行时,该int无需保持一致
-
如果equals两个对象是相等的,那么他们的hashCode必须相同
-
如果equals两个对象不相等,hashCode不要求一定生成不同的整数结果。但为不相等对象生成不同hash值能提升hash表的性能 |
HashMap中已经存储的key,hashCode被更改的后果是什么? |
equals |
equals 方法在非空对象引用上实现相等关系:
- 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
- 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
- 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
- 一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
- 对于任何非空引用值 x,x.equals(null) 都应返回 false。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
| |
eclipse: Source |
- tips:eclipse自带生成toString,equals和hashCode方法
| |
finalize |
- 时机:当jvm已确定尚未终止的任何线程,无法再通过任何方法访问此对象时
- finalize方法可以采取任何操作,其中包括再次使此对象对其他线程可用;不过,finalize的主要目的是丢弃对象之前执行清除操作
- 如果finalize抛出未捕获异常,那么该异常将被忽略,并且该对象的终结操作将终止。
- 对于任何给定对象,jvm最多只调用一次finalize 方法。
| |
clone |
|
看看ArrayList.clone() |
wait和notify |
当前线程必须拥有此对象监视器
| 要在同步代码块中 |