在JDK中提供了一个Object类,它是类层次结构的根类,每个类都直接或间接继承自该类,所有对象(包括数组)都实现了这个类的方法。
Object类中的常用方法如下表
方法名称 | 方法说明 |
---|---|
equals() | 指示其他某个对象是否与此对象“相等” |
getClass() | 返回此Object的运行时类 |
hashCode() | 返回该对象的哈希码值 |
toString() | 返回该对象的字符串表示 |
下面通过例子演示Object类中toString()方法的使用,如下:
//定义Animal类
class Animal {
//定义动物叫的方法
void shout(){
System.out.println("动物叫!");
}
}
//定义测试类
public class toString {
public static void main(String[] args) {
Animal animal = new Animal(); //创建Animal类对象
System.out.println(animal.toString()); //调用toString()方法并打印
}
}
代码运行结果:Animal@372f7a8d
在代码中,第十二行调用了Animal对象的toString()方法,虽然Animal类并没有定义这个方法,但是程序并没有报错。
这是因为Animal默认继承自Object类,在Object类中定义了toString()方法,该方法中输出了对象的基本信息。
Object类的toString()方法中的代码具体如下:
getClass().getName() + "@" + Integer.toHexString(hashCode());
其中用到的方法解释具体如下:
-
getClass().getName()代表返回对象所属类的类名,即Animal。
-
hashCode()代表返回该对象的哈希值。
-
Integer.toHexString(hashCode())代表将对象的哈希值用十六进制表示。
其中,hashCode()是Object类中定义的一个方法,这个方法将对象的内存地址进行哈希运算,并返回一个int类型的哈希值。
在实际开发中,通常希望对象的toString()方法返回的不仅仅是基本信息,而是一些特有的信息,这时重写Object类中的toString()方法可以实现,如下
//定义Animal类
class Animal {
//重写Object类的toString()方法
public String toString(){
return "这是一个动物";
}
}
//定义测试类
public class Override_toString {
public static void main(String[] args) {
Animal animal = new Animal(); //创建Animal类对象
System.out.println(animal.toString()); //调用toString()方法并打印
}
}
运行结果:这是一个动物