Object类

作者: 残月雨纷纷 | 来源:发表于2017-06-24 20:58 被阅读12次

1,Object类是Java中一个比较特殊的类,唯一没有父类的类,如果一个类没有使用关键词extends那么这个类默认继承Object类。

public calss Person   //当没有指定父类时,会默认Object类为其父类

————————————————————————
Object类中常用方法及操作功能表图

返回类型 方法名称 输入参数 抛出异常 操作功能
构造方法 Object 创建Object对象
Object clone CloneNotSupportedException 创建并返回此对象的一个副本
boolean equals Object 指定其他某个对象是否与此对象相等
void finalize Throwable 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法
Class getClass 返回此Object的运行时类
int hashCode 返回该对象的哈希码值
void notify ILLegaIMonitorStateException 唤醒在此对象监视器上等待的单个线程
void notifyALL ILLegaIMonitorStateException 唤醒在此对象监视器上等待的所有线程
void wait InterruptedExceptiom 在其他线程调用此对象的notify()方法或notifyALL()方法前导致当前线程等待
String toString 返回该对象的字符串表示
void wait long InterruptedException 在其他线程调用此对象的notify()方法或notifyALL()方法,或者超过指定的时间量前,导致当前线程等待
void wait long.int InterruptedException 在其他线程调用此对象的notify()方法或notifyALL()方法,或者其他某个线程中断当前线程,或者已经超过某个时间量前,导致当前线程等待

————————————————————————
取得对象信息:toString()

覆写Object类的方法

class Person extends Object
{
    String name ="张三";
    int age=25;
    //覆写Object类中的toString()方法
    public String toString()
    {
        return"名字:"+name+",年龄:"+age;
    }
}
class heheda
{
    public static void main(String args[])
    {
        Person p=new Person();
        System.out.println(p);
    }
}

————————————————————————
对象是否相等

没有覆写Object类中的equals方法

class Person
{
    private String name;
    private int age;
    public Person(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
}
class jdjdkd
{
    public static void main(String args[])
    {
        Person p1=new Person("张三",25);
        Person p2=new Person("张三",25);
        System.out.println(p1.equals(p2)?"内容相等":"内容不等");
    }
}
//因为p1与p2的内容分别在不同的内存空间指向了不同的内存地址。
在用equals对两个对象进行比较时,实际上比较两个对象的地址

————————————————————————
equals方法的覆写

class Person
{
    private String name;
    private int age;
    public Person(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
    //覆写父类(Object类)中的equals方法
    public boolean equals(Object o)
    {
        boolean temp =true;
        //声明一个p1对象,此对象实际上就是当前调用equals方法的对象
        Person p1=this;   //声明一个Person对象p1,并用this实例化。此时this相当于当前调用此方法的对象t_p1实例化的对象(倒数第六行)
        //判断Object类对象是否是Person的实例
        if(o instanceof Person)  //判断传进去的实例对象o是否属于Person类的实例化对象
        {
            //如果是Person类实例,则进行向下转型
            Person p2=(Person)o;
            //调用String类中的equals方法
            if(!(p1.name.equals(p2.name)&&p1.age==p2.age))  //比较两个对象的内容是否相等
            {
                temp=false;
            }
        }
        else
        {
            //如果不是Person类的实例,则直接返回false
            temp=false;
        }
        return temp;
    }
}
class jxjxkx
{
    public static void main(String args[])
    {
        Person t_p1=new Person("张三",25);
        Person t_p2=new Person("张三",25);
        //判断p1和p2的内容是否相等
        System.out.println(t_p1.equals(t_p2)?"相等":"不等");   //通过t_p1调用equals()方法,并将t_p2对象的实例传到equals方法中,比较两个对象是否相等
    }
}

相关文章

网友评论

    本文标题:Object类

    本文链接:https://www.haomeiwen.com/subject/plakcxtx.html