黑马程序员 学习笔记之 Object类

来源:互联网 发布:旋转门plc编程 编辑:程序博客网 时间:2024/05/27 00:41

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


Object是比较特殊的类,它是所有类的父类,是Java类中,最高层的类,实质上Java中任何一个类都是它的子类。当创建一个类时,总是在继承,除非某个类已经制定要从其它类继承,否则它就是从java.lang.Object类继承的。

在JDK API 1.6中,是这么介绍Object类的

Object 是类层次结构的根类。每个类都使用Object 作为超类。所有对象(包括数组)都实现这个类的方法。 

以下是Object类的主要方法:

方法摘要

protected  Object

 clone()
          创建并返回此对象的一个副本。

 boolean

 equals(Object obj)
          指示其他某个对象是否与此对象“相等”。

protected  void

 finalize()
          当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

 Class<?>

 getClass()
          返回此 Object 的运行时类。

 int

 hashCode()
          返回该对象的哈希码值。

 void

 notify()
          唤醒在此对象监视器上等待的单个线程。

 void

 notifyAll()
          唤醒在此对象监视器上等待的所有线程。

 String

 toString()
          返回该对象的字符串表示。

 void

 wait()
          在其他线程调用此对象的 notify() 方法或notifyAll() 方法前,导致当前线程等待。

 void

 wait(long timeout)
          在其他线程调用此对象的 notify() 方法或notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。

 void

 wait(long timeout, int nanos)
          在其他线程调用此对象的 notify() 方法或notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

  其中equals()是比较常用的,而且子类在使用这个方法时,如果自定义类中也有比较相同的功能,没有必要重新定义。只要沿袭父类中的equals(),建立自己特有比较内容即可。以下是JDK文档中,对这个方法的详细说明

equals

public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。

equals 方法在非空对象引用上实现相等关系:

  • 自反性:对于任何非空引用值 xx.equals(x) 都应返回 true
  • 对称性:对于任何非空引用值 xy,当且仅当 y.equals(x) 返回true 时,x.equals(y) 才应返回true
  • 传递性:对于任何非空引用值 xyz,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么x.equals(z) 应返回true
  • 一致性:对于任何非空引用值 xy,多次调用 x.equals(y) 始终返回true 或始终返回false,前提是对象上 equals 比较中所用的信息没有被修改。
  • 对于任何非空引用值 xx.equals(null) 都应返回 false

Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 xy,当且仅当xy 引用同一个对象时,此方法才返回 truex == y 具有值true)。

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

参数:
obj - 要与之比较的引用对象。
返回:
如果此对象与 obj 参数相同,则返回 true;否则返回 false

下面是课程中toString()的代码:
public class ObjectInstance {public String toString() { // 重写toString()方法return "在" + getClass().getName() + "类中重写toString()方法";}public static void main(String[] args) {System.out.println(new ObjectInstance()); // 打印本类对象}}
运行结果:


下面是使用equals()方法的程序:
class V { // 自定义类V}public class OverWriteEquals {public static void main(String[] args) {String s1 = "123"; // 实例化两个对象,内容相同String s2 = "123";System.out.println(s1.equals(s2)); // 使用equals()方法调用V v1 = new V(); // 实例化两个V类对象V v2 = new V();System.out.println(v1.equals(v2)); // 使用equals()方法比较v1与v2对象}}

运行结果:


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

0 0
原创粉丝点击