Object类

父类是否还有父类???
有的,叫Object类,也叫根类,我们叫他上帝。是所有对象的超类或父类。

  • 该类总定义了所有类都具有的功能,
  • 隐式的构造方法
    • 所有对对象都具备对象比较功能:equals( 与之比较的对象 ); 是同一个对象就输出true,不同对象输出为flase,当然要用我们自己输出一下。原理就是比较两个对象的地址是否相同(对象1 === 对象2 ),java中一切都是指针,所以 对象1 就是地址!!
    • 如果想实现不一样的比较方法,比如值相等即相等;直接复写equals( Object obj )方法,代码如下:
    class Demo{
    private int num;
    Demo(int num){
        this.num = num;
    }

    //重写Object类的equals方法,让值相同,对象就相同;值不同,对象也就不同!!
    public boolean equals(Object obj){ //Object obj = new Demo()    多态!!!!!
        if(!(obj instanceof Demo))    //判断obj对象是否是Demo类
            return false;  //更为合理的做法是用异常处理,抛出异常!!
        Demo d = (Demo)obj;    //类型转换;只能父类对象转换为子类对像。
        return this.num == d.num;
    }
}

class Person{    //定义一个Person类,测试一下不同类的对象比较

}

class ObjectDemo{
    public static void main(String[] args){
        Demo d1 = new Demo(123);
        Demo d2 = new Demo(23);
        Person p1 = new Person();
        System.out.println(d1.equals(d2));
        System.out.println(d1.equals(p1));   //不同类之间的对象比较,对象一定不同,
        System.out.println(d1.equals(d1));    //所以我们在equals(Object obj)的开头先判断一下是否是同个对象!!!
    }
}
  • toSring类:返回该对象的字符串,任何对象都能转换为字符串,神奇吧!!!
    • 实现:getClass().getName() + ‘@‘ +Integer.toHexString( hashCode() )
    • 字符格式: Demo@7852e922(对象类型+@+哈希值(内存地址))
    • 哈希值的方法:hashCode();出来的值是十进制的要转十六进制:Integer.toHexString(十进制的值)
    • 地址值一般没什么意义;所以一般需要复写toString( )方法!!!
  • getClass( )
    • Class a = new Class(); //定义类文件
    • getClass( ).getName( )
  • hashCode( ) :
    • 返回哈希值!!!
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第05天API 今日内容介绍 ·Object类& System类 ·日期相关类 ·包装类&正则表达式 ·Date对...
    chcvn阅读 434评论 0 1
  • 说明: object是类层次的根类,所有类的父(超)类 一、registerNatives() private ...
    nzdnllm阅读 512评论 0 4
  • Object Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这...
    hey_leex阅读 392评论 0 1
  • 我曾经在震怒之下质问某人良心哪去了,三观哪去了,对方语气生硬情绪平缓的回答我,他的三观很正,当下我就觉得电视里...
    眯歌眯歌变阅读 174评论 0 0
  • 如题,春节前几天做梦,梦到母亲一夜变老,全部白头。梦里床上的妈妈面露惊恐,手插进自己的白发,凄厉的声音回响...
    阿尤卫阅读 378评论 0 2