08-Object类

来源:互联网 发布:mac iphoto gif 编辑:程序博客网 时间:2024/06/16 01:47

5.3 Object类

类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。 
是从所有类进行抽取而来的,具备着所有对象都具备的共性内容。

常用的共性方法

5.3.1 equals方法

  • 指示其他某个对象是否与此对象“相等”。
  • 返回 
    如果此对象与 obj 参数相同,则返回 true;否则返回 false。

对于未重写的equals方法,相当于 == 
源代码如下:

  1. public boolean equals(Object obj) {
  2. return (this == obj);
  3. }

一般都会覆盖此方法,根据对象的特有内容(比如属性),建立判断对象是否相同的依据。

注意: 
当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

重写equals例子:

  1. public boolean equals(Object obj){
  2. if(!(obj instanceof Person)) //判断obj对象是不是Person类型的 不是抛出异常,是就进行转换,并比较
  3. {
  4. throw new ClassCastException("不是同一类型,无法转换");
  5. }
  6. Person p =(Person) obj;
  7. return this.id ==p.id; //比较两个对象的内容---id,而不是默认比较对象的地址
  8. }

5.3.2hashCode方法

  • 返回该对象的哈希码值,
  • 来源jdk 6.0 api解释: 
    实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)

重写hashCode例子:

  1. public int hashCode(){ //重写hashCode方法
  2. return id;
  3. }

5.3.3 getClass方法

  • 表示此对象运行时类的 Class 对象。

  • Class对象: 
    类型信息在运行时如何表示(RTTI),由Class对象的特殊对象完成,Class对象包含与类有关的信息。 
    类作为程序中的一部分,每个类都有一个Class对象(即,每当编写且编译了一个新类,就会产生一个Class对象,这个对象被保存在一个同名的.class文件中)

5.3.4 toString方法

  • 返回该对象的字符串表示形式

对于未重写的toString方法, 
源代码:

  1. public String toString() {
  2. return getClass().getName() + "@" + Integer.toHexString(hashCode());
  3. }

重写toString例子:

  1. public String toString(){//重写toString方法
  2. return "Person"+id;
  3. }
原创粉丝点击