• java中的object类


           在Java中,任何一个类都扩展来自Object类。当没有为某一个类定义父类时,Java会自动定义Object类为其父类。


    object类的一些常用方法:


    (1)public String toString()

       Object类定义了toString()方法,打印输出对象所属的类名和散列码。当需要字符串的地方,系统自动调用该对象的toString()方法。object定义了自己的toString()方法,但是建议自己重写

    //object定义的toString()方法
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    
    //范例1:
    Point p = new Point ( 10, 20 ) ;
    String message = "The current position is " + p ; //调用p.toString
    
    //范例2:
    classType a = new classType();
    System.Out.println(a);//其实是自动调用了a对象的toString()方法


    (2)public native int hashCode()

         返回对象的Hash码。Hash码是标志对象的唯一值,Hash码相同的对象是同一对象。散列码(hash code)是由对象导出的一个整型值。散列码是没有规律的,如果x和y是两个不同的对象,那x.hashCode()与y.hashCode()一般是不相同的


    (3)三个函数用于控制线程

          public final native void notify();

          public final native void notifyAll();

          public final native void wait();

          native型方法指由C++语言编写的方法,Java解释器对其进行转义后才执行。


    (4)“==”与equals()

          "==" 一般用于基本数据类型比较。若用作两个引用对象比较,仅当引用变量引用同一个对象时,才返回true,否则false。object类的实现与“==”其实就是一个意思,建议重写。

     

    //Object类方法定义:
    
    public boolean equals(Object obj)
    { 
          return (this == obj);
    }
    
    
    //范例1:
    Dog d1 = new Dog(1,2);
    Dog d2 = new Dog(1,2);
    d1 == d2;//false,虽然两者的值相等,但是d1和d2分别指向的不同对象
    d1.equals(d2);//false,object中的equals实现本质就是“==”,所以结果与上面一样
    
    
    //范例2:
    //如果我们一定要比较里面的内容是否相等,则我们必须重写equals
    //假设我们在Dog重写了equals方法,则有如下答案:
    Dog d1 = new Dog(1,2);
    Dog d2 = new Dog(1,2);
    d1 == d2;//false
    d1.equals(d2);//true,比较的是内容
    
    
    //范例3:
    //String类中重写了equals方法
     void  EqualCompare()
     {
         String s1 = new String("Hello");
         String s2 = new String("Hello");
    
        //未使用new,s4引用既存的对象(编译器创建对象之前先进行检测"Hello"是否已经存  在,若存在,则返回原对象的引用)
         String s3 = "Hello";
         String s4 = "Hello";     
    
         System.out.println(s1.equals(s2));  //  true    x1行
         System.out.println(s1 ==s2);   // false       两变量引用不同对象
         System.out.println(s3.equals(s4)); //true   两变量引用相同对象
         System.out.println(s3 ==s4);    // true        两变量引用相同对象
     }


    (5)finalize()

         Object类中的finalize()一个对象被垃圾收集的时候,最后会由JVM调用这个对象的finalize方法。


    object类的用方法:

        这里面有个父类引用指向子类对象,函数参数为object保证所有类的对象都能过传进来,然后通过instanceof提取出引用的类型与需要的类型相比较。然后通过强制转换为相应的类型,进行下面的操作。

     

    int func(Object o)
    {
         if(!(o instanceof Cat))return -1;
         Cat c = (Cat)o;//强制转换为cat,再进行下面的操作
    }



  • 相关阅读:
    Redis源码解析(十五)--- aof-append only file解析
    Redis源码解析(十五)--- aof-append only file解析
    Redis源码解析(十五)--- aof-append only file解析
    Storm的起源概况
    Storm的起源概况
    Storm的起源概况
    Storm的基本知识
    Storm的基本知识
    Storm的基本知识
    Redis源码解析(十六)--- config配置文件
  • 原文地址:https://www.cnblogs.com/pangblog/p/3285624.html
Copyright © 2020-2023  润新知