黑马程序员技术交流社区

标题: 面向对象基础…… [打印本页]

作者: 岁月无情    时间: 2015-6-8 00:54
标题: 面向对象基础……
1.   Object类
         类Object 是类层次结构的根类。每个类都使用Object 作为超类。所有对象(包括数组)都实现这个类的方法。
         clone()方法用于创建并返回此对象的一个副本。
         equals(Object obj)方法指示其他某个对象是否与此对象“相等”。obj - 要与之比较的引用对象。
         finalize()throws Throwable
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写finalize 方法,以配置系统资源或执行其他清除。
         notifyAll()唤醒在此对象监视器上等待的所有线程。
         wait(long timeout)throwsInterruptedException
wait方法可以在其他线程调用此对象的notify() 方法或notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。

         toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。该字符串由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
  1. getClass().getName() + '@' + Integer.toHexString(hashCode())
复制代码
2.    对象的比较
直接用"=="判断两个对象是否一样,是不行的。"=="表示比较两个对象在栈内存中的对象变量的值是否一样,而栈内存中对象的变量实质存的是对象在堆内存中的收地址,所以用"=="比较两个对象时就是在比较两个对象在栈内存中的地址是否一样,除非两个对象是同一个对象,否则他们的收地址是不相等的。所以比较两个对象是否相等应该用父类Object的equals方法。
public boolean eauals(Object obj)方法默认也是用"=="比较的,其中的代码是这样的:return(this==obj); 使用equals时要重载这个方法。实例如下:
  1. //关于于对象的比较,要用覆盖Object的equals方法,
  2. class Person {
  3.         String name;
  4.         int age;
  5.         public boolean eauals(Object obj) {
  6.                 //如果比较的两个类是同一个类,比如遇到某两个类是用get方法得到时需要这样的判断
  7.                 if (this == obj) {
  8.                         return true;
  9.                 }
  10.                 //比较两个类是否相等,就是比较他们的所有属性是否一样
  11.                 if (obj instanceof Person) {
  12.                         Person p=(Person)obj;
  13.                         if(this.age==p.age&&this.name==p.name)
  14.                                 return true;
  15.                 }
  16.                 return false;
  17.         }
  18. }
  19.         我们知道某子类确实是某种类型,但是计算机只知道它是其父类类型,这时我们要用这个对象的特有的成员时,就要用强制转换的方法进行转换。
  20.         判断两个类是否是同一种类型,用关键字instanceof
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2