menu

Java Object's Methods

Posted on 23/12/2019

System.arrayCopy(Object src, int srcPos, Object dest, int destPost, int length),对于数组元素为基本数据类型时,做deep copy,数组元素为引用类型时,做shallow copy。

Object 对象方法

clone方法

  • clone方法在Object类中的访问修饰符为protected。要使用clone方法,一般是实现Cloneable接口,如果没有实现该接口,则调用clone方法时,会抛出CloneNotSupportException

  • Object#clone()方法,对基本数据类型和不可变的引用类型(如String, Intger等),做deep copy。对引用类型做shallow copy。如果要实现deep copy,则需要对基本数据类型和不可变引用类型调用super.clone()方法,对引用类型则创建相应的对象,并赋值。

hashCode方法

  • 计算当前对象的hash值,该值为int类型。
  • 如果两个非null对象obj1obj2有以下关系:obj1.equals(obj2) == true;, 则这两个对象的hash值相等。
  • 两个非null对象obj1obj2有以下关系:obj1.equals(obj2) == false,两个对象的hash值可以相等,但是hash值不相等,对底层数据结构是hashtable的集合类型,可以均匀的分布到不同的散列桶中。

equals方法

  • 对比某个对象与当前对象是否相等。

  • 默认实现是对比两个引用对象的地址是否相等,return object == this;
  • 使用hashtable实现的集合对象时,必须通过对比值相等重写该方法。同时也重写hashCode方法。

getClass方法

  • 返回当前对象的Class对象。

序列化

  • 只有实现了Serializable接口的类才能序列化和反序列化。
  • 实现序列化的类要有一个private final static long serialVersionUID属性,用于反序列化时,对比接受方对比已经加载的类和反序列化的类是否相同,如果相同则可以成功反序列化该类,否则会抛出InvalidClassException
Top