java Object 方法详解

Object

方法

注意

其他

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
    • 浅拷贝和深拷贝

    • 所有的数组都被视为实现接口Cloneable

  • 看看ArrayList.clone()

  • wait和notify

    当前线程必须拥有此对象监视器

    要在同步代码块中