1,Object类是Java中一个比较特殊的类,唯一没有父类的类,如果一个类没有使用关键词extends那么这个类默认继承Object类。
public calss Person //当没有指定父类时,会默认Object类为其父类
————————————————————————
Object类中常用方法及操作功能表图
返回类型 | 方法名称 | 输入参数 | 抛出异常 | 操作功能 |
---|---|---|---|---|
构造方法 | Object | 创建Object对象 | ||
Object | clone | CloneNotSupportedException | 创建并返回此对象的一个副本 | |
boolean | equals | Object | 指定其他某个对象是否与此对象相等 | |
void | finalize | Throwable | 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法 | |
Class | getClass | 返回此Object的运行时类 | ||
int | hashCode | 返回该对象的哈希码值 | ||
void | notify | ILLegaIMonitorStateException | 唤醒在此对象监视器上等待的单个线程 | |
void | notifyALL | ILLegaIMonitorStateException | 唤醒在此对象监视器上等待的所有线程 | |
void | wait | InterruptedExceptiom | 在其他线程调用此对象的notify()方法或notifyALL()方法前导致当前线程等待 | |
String | toString | 返回该对象的字符串表示 | ||
void | wait | long | InterruptedException | 在其他线程调用此对象的notify()方法或notifyALL()方法,或者超过指定的时间量前,导致当前线程等待 |
void | wait | long.int | InterruptedException | 在其他线程调用此对象的notify()方法或notifyALL()方法,或者其他某个线程中断当前线程,或者已经超过某个时间量前,导致当前线程等待 |
————————————————————————
取得对象信息:toString()
覆写Object类的方法
class Person extends Object
{
String name ="张三";
int age=25;
//覆写Object类中的toString()方法
public String toString()
{
return"名字:"+name+",年龄:"+age;
}
}
class heheda
{
public static void main(String args[])
{
Person p=new Person();
System.out.println(p);
}
}
————————————————————————
对象是否相等
没有覆写Object类中的equals方法
class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
}
class jdjdkd
{
public static void main(String args[])
{
Person p1=new Person("张三",25);
Person p2=new Person("张三",25);
System.out.println(p1.equals(p2)?"内容相等":"内容不等");
}
}
//因为p1与p2的内容分别在不同的内存空间指向了不同的内存地址。
在用equals对两个对象进行比较时,实际上比较两个对象的地址
————————————————————————
equals方法的覆写
class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
//覆写父类(Object类)中的equals方法
public boolean equals(Object o)
{
boolean temp =true;
//声明一个p1对象,此对象实际上就是当前调用equals方法的对象
Person p1=this; //声明一个Person对象p1,并用this实例化。此时this相当于当前调用此方法的对象t_p1实例化的对象(倒数第六行)
//判断Object类对象是否是Person的实例
if(o instanceof Person) //判断传进去的实例对象o是否属于Person类的实例化对象
{
//如果是Person类实例,则进行向下转型
Person p2=(Person)o;
//调用String类中的equals方法
if(!(p1.name.equals(p2.name)&&p1.age==p2.age)) //比较两个对象的内容是否相等
{
temp=false;
}
}
else
{
//如果不是Person类的实例,则直接返回false
temp=false;
}
return temp;
}
}
class jxjxkx
{
public static void main(String args[])
{
Person t_p1=new Person("张三",25);
Person t_p2=new Person("张三",25);
//判断p1和p2的内容是否相等
System.out.println(t_p1.equals(t_p2)?"相等":"不等"); //通过t_p1调用equals()方法,并将t_p2对象的实例传到equals方法中,比较两个对象是否相等
}
}