一、基本作用
在 Java 中所有的类都有一个公共的父类 Object,一个类只要没有明显的继承一个类,则肯定是 Object 的子类。
//这两行代码表示的含义是一样的
class Person extends Object{}
class Person{}
class Demo{}//定义 Demo 类,实际上继承 Object 类
public class Test{
    public static void main(String[] args) {
        Demo d = new Demo();//实例化 Demo 对象
        System.out.println("不加toString()输出:" + d);
        System.out.println("加toString()输出:" + d.toString());
    }
}
- 4
 - 5
 - 6
 - 7
 - 8
 - 9
 

 程序随机输出了一些地址信息,加不加 toString() 最终的输出结果都是一样的,对象输出时会自动调用 Object 类中的 toString() 方法打印内容,所以利用此特性可以通过 toString() 可以取得一些对象的信息。
 字符串内容就是对象的类型+@+内存地址值
- equals()
Object 类中的 equals() 方法实际上也是可以使用的,但是其默认使用的是按地址进行比较的,并不能对内容进行比较 
三、接收任意引用类型的对象
既然 Object 类是所有对象的父类,则所有的对象都可以向 Object 进行转换,在这其中也包含了数组和接口类型,即一切的引用数据类型都可以使用 Object 进行接收。
interface A{//定义接口 A
    public String getInfo();//定义抽象方法
}
class B implements A{
    public String getInfo(){
        //覆写接口中的抽象方法
        return "Hello World!!!";
    }
}
public class Test{
    public static void main(String[] args) {
        A a = new B();//为接口实例化
        Object obj = a;//对象向上转型
        A x = (A)obj;//对象向下转型
        System.out.println(x.getInfo());
    }
}
- 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 
虽然接口不能继承一个类,但是依然是 Object 类的子类,因为接口本身是引用数据类型,所以可以进行向上转型操作。
同理也可以使用 Object 接收一个数组,因为数组本身也是引用类型。
public class Test{
    public static void main(String[] args) {
        int temp[] = {1,3,5,7,9};//定义数组
        Object obj = temp;//使用 Object 接收数组
        print(obj);//传递数组引用
    }
    public static void print(Object o){//接收一个对象
        if(o instanceof int[]){//判断对象的类型
            int x[] = (int[])o;//向下转型
            for(int i=0;i<x.length;i++){//循环输出
                System.out.println(x[i] + "\t");
            }
        }
    }
}
- 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 
以上程序使用 Object 接收一个整型数组,因为数组本身属于引用数据类型,所以可以使用 Object 接收数组内容,输出时通过 instanceof 判断是否是一个整型数组,然后进行输出操作。
因为 Object 类可以接收任意的引用数据类型,所以在很多的类库设计上都采用 Object 作为方法的参数,这样操作会比较方便

                


















