java中的object类

来源:互联网 发布:学知不足的名人例子 编辑:程序博客网 时间:2024/04/26 11:11

       在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;//falsed1.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,再进行下面的操作}



原创粉丝点击