1. 概述
类Object是类层次结构根类,每个类都使用Object作为超类。
所有对象(包括数组)都实现这个类的方法。
class Demo //extends Object
{
//除了有默认构造函数
//还继承了类Object的所有方法
}
这里主要总结Object类中的三个常用方法:equals()、toString()、hashCode()。
2. equals()
2.1 基本应用
比较的是地址值
boolean equals(Object obj)
指示一些其他对象是否等于此
class Demo //extends Object
{
//除了有默认构造函数
//还继承了类Object的所有方法
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo d1=new Demo();
Demo d2=new Demo(); //d2和d1的内存空间不同
Demo d3=d1; //d3和d1的内存空间相同
//equals的作用与==相同
System.out.println(d1.equals(d2));
System.out.println(d1==d2);
System.out.println(d1.equals(d3));
System.out.println(d1==d3);
}
}
2.2 扩展应用
复写Object中的equals功能:
Object类中已经提供了对对象是否相同的比较方法,
如果自定义类中也有比较功能,没有必要重新定义;
只要沿袭父类中的功能,建立自己特有的比较内容即可。
这就是覆盖
用法:覆盖重写+利用多态+向下转型+判断子类实例
class Demo //extends Object
{
private int num;
Demo(int num)
{
this.num=num;
}
//利用多态
public boolean equals(Object obj) //Object obj=new Demo();
{
//判断是哪个子类的实例:用关键字instanceof
if(!(obj instanceof Demo))
return false;
Demo d=(Demo)obj; //向下转型
return this.num==d.num;
}
}
class Person
{
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo d1=new Demo(4);
Person p=new Person();
System.out.println(d1.equals(d2));//Object obj=new Person()
System.out.println(d1.equals(d3));
System.out.println(d1.equals(p));
}
}
输出结果是:
true
false
false
3. toString()
3.1 基本应用
返回对象的字符串表示形式
- toString()
public String toString()
该类方法返回一个等于下列值的字符串
getClass().getName()+’@’+Integer.toHexString(hashCode())
- hashCode()
int hashCode()
返回对象的哈希码值
- getClass()
类<?> getClass()
返回此object的运行时类
- getName()
String getName()
返回由类对象表示的实体(类、接口、数组类、原始类型或空白)的名称,作为String
class Demo //extends Object
{
private int num;
Demo(int num)
{
this.num=num;
}
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo d1=new Demo(4);
System.out.println(d1.toString());
System.out.println(d1.hashCode());
System.out.println(Integer.toHexString(d1.hashCode()));
Class c=d1.getClass();
System.out.println(c.getName());
}
}
输出结果是:
Demo@5451c3a8
1414644648
5451c3a8
Demo
3.2 扩展应用
复写Object中的toString功能:
class Demo //extends Object
{
private int num;
Demo(int num)
{
this.num=num;
}
public String toString() //复写toString方法
{
return "demo:"+num;
}
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo d1=new Demo(4);
System.out.println(d1.toString());
}
}
输出结果是:
demo:4