Object类总结

来源:互联网 发布:网络上弧是什么意思 编辑:程序博客网 时间:2024/03/29 19:50

Object类Java中一个特殊的类,是所有类默认的基类。Object类实现了很多方法(在API文档中可以看到):

(1)protected Object clone();

boolean equals();

protected void finalize();

Class<?> getClass();

int hashCode();

String toString();

(2)void notify();

    void notifyAll();

    void wait();

    void wait(long timeout);

    void wait(long timeout,int nanos);

(1)中是比较常用的方法;(2)中方法跟线程有关,以后再作补充。

下面主要针对(1)中的两个方法equals()、toString()做个总结。

首先看一下equals()方法,用于比较两个对象是否相等。在Object类的实现等同于判断(x==y),比较得是两个对象引用的地址。两个new出来的对象的引用的地址肯定是不一样的,所以直接调用此方法比较两个对象返回false。(String类中已帮我们重写了equals方法。)

以下是一个示例程序:

public class test01{public static void main(String args[]){Cat c1 = new Cat(1.0 ,2.0);Cat c2 = new Cat(1.0 ,2.0);System.out.println(c1 == c2);System.out.println(c1.equals(c2));//不重写的话与上面的效果一样,所以要在Cat类中重新该方法}}class Cat{private double weight;private double height;public Cat(double weight,double height){this.weight = weight;this.height = height;}public boolean equals(Object obj){if(obj == null) return false;else{if(obj instanceof Cat){Cat c = (Cat)obj;if(this.weight == c.weight &&this.height == c.height)return true;}}return false;}}


运行结果:

false
true

################################################################

ToString()方法返回一个描述该对象的字符串,一般也需要重写。首先看一个小程序:

public class Test02 {public static void main(String[] args){Dog d = new Dog();System.out.println("Dog:"+ d);}}class Dog{}


执行结果:

Dog:Dog@c17164

简单分析:

上面打印的“Dog:”+ d 等价于 “Dog:”+ d.toString() (当然这里的toString()方法是从Object类直接继承而来的)。重写该方法即可。

 


 

 

 

 

 

 

 

原创粉丝点击