基本作用
Object类存储在java.lang包中。Object类是Java中所有类的父类,即一个类只要没有明显地继承一个类,则肯定是Object类的子类。
如下两行代码表示的含义是一样的
class Person extends Object{}
class Person
Object类的主要方法如下表:
序号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public Object() | 构造 | 构造方法 |
2 | public boolean equals(Object obj) | 普通 | 对象比较 |
3 | public int hashCode() | 普通 | 取得Hash码 |
4 | public String toString() | 普通 | 对象打印时调用 |
主要方法
toString()方法
当程序随机输出一些地址信息时,实例化对象输出是一定会调用Object类中的toString()方法打印内容,所以加不加toString()方法最终的输出结果是一样的。如下代码所示:
class Demo{
//定义Demo类,实际上继承了Object类
}
public class ObjectDemo01 {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println("不加toString()输出:" + d);
System.out.println("加toString()输出:" + d.toString());
}
}
运行结果:
不加toString()输出:Demo@7852e922
加toString()输出:Demo@7852e922
但有时可以利用toString()方法的这一特性取得一些对象的信息,如下代码所示:
class Person{
private String name;
private int age;
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "姓名:" + this.name + ";年龄:" + this.age;
}
}
public class ObjectDemo02 {
public static void main(String[] args) {
Person per = new Person("zhangsan",30);
System.out.println(per.toString());
}
}
运行结果:
姓名:zhangsan;年龄:30
接收任意引用类型的对象
既然Object类是所有对象的父类,那么所有对象都可以向Object转换,其中包含了数组和接口。虽然接口不能继承一个类,但依然是Object类的子类,接口是引用数据类型,故可进行向下转型。数组也是引用数据类型,当然,也可以使用Object接收一个数组。
使用Object接收接口的基本操作方法:
interface A{
public String get();
}
class B implements A{
public String get() {
return "Nice to meet you!";
}
}
public class ObjectDemo04 {
public static void main(String[] args) {
A a = new B(); //为接口实例化
Object o = a; //对象向上转型
A x = (A)o; //对象向下转型
System.out.println(x.get());
}
}
运行结果:
Nice to meet you!
使用Object接收数组的基本操作方法:
public class ObjectDemo05 {
public static void main(String[] args) {
int a[] = {578,614,529}; //定义数组
Object o = a; //使用Object接收数组
print(o); //传递数组引用
}
//在使用print()方法输出时先通过instanceof判断类型是否是一个整型数组,然后再进行输出操作
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");
}
}
}
运行结果:
578
614
529