Object类:JAVA里所有类的直接或间接超类,包含了所有JAVA类的公共属性
一.Object类的主要方法
public final Class getClass() // 获取当前对象所属的类信息,返回Class对象
public String toString() // 返回表示当前对象本身有关信息的字符串对象
public boolean equals(Object obj) //比较两个对象引用是否指向同一对象,是返回true,否返回false
public Object clone() //复制当前对象,并返回这个副本
public int hashCode() //返回该对象的哈希代码值
protected void finalize() throws Throwable //在对象被回收时自动被执行,通常完成资源释放工作
二.相等和同一: 比较运算符“==”判断的是这两个对象是否同一
1.两个对象具有相同的类型,及相同的属性值,则称二者相等
2.如果两个引用变量指向的是同一个对象,则称这两个引用变量同一
3.两个对象同一,则肯定相等。 两个对象相等,不一定同一。
栗子:用“==”判断两个引用是否同一
public class Test{
public static void main(String[] args){
Bank a = new Bank("Bob",123456,100.00f);
Bank b = new Bank("Bob",123456,100.00f); //两个对象中包含的所有属性值都相同
if(a == b) //比较的是指向这两个对象的 引用a和引用b是否相等
System.out.println("Yes");
else
System.out.println("NO");
}
} // 此程序运行的结果为"NO",原因是使用"=="判断的是两个引用是否同一
三. equals 方法: 和“==”一样,也是判断两个对象引用是否同一
Object类中equals()方法的定义:public boolean equals(Object x) { return this == x; }
栗子: equals 方法
public class Test{
public static void main(String[] args){
Bank a = new Bank("Bob",123456,100.00f);
Bank b = new Bank("Bob",123456,100.00f); //两个对象中包含的所有属性值都相同
if(a.equals(b)) //比较的是指向这两个对象的 引用a和引用b是否相等
System.out.println("Yes");
else
System.out.println("NO");
}
} // 由于两个引用不是指向同一对象,运行的结果仍为"NO"
栗子: 覆盖equals 方法
public boolean equals(Object x){
if(this.getClass() != x.getClass()) //比较参数对象和当前对象是否属于同一个类型
return false;
Bank b = (Bank) x; //将参数对象 强制转换为Bank类型
return((this.getOwnerName().equals(b.getOwnerName)) && (this.getAccountNumber() == b.getAccountNumber()) &&(this.getBalance() == b.getBalance()));//比较账号、户名、余额是否相等
}
四.Clone方法
使用clone方法复制对象:
1.在Object类中被定义为protected,在类外不能够访问它,所以需要覆盖为public
2.实现Cloneable接口,不用去实现接口中的方法体,只是个标记,表示对象是可以被克隆的
栗子: class MyObject implements Cloneable { //... }
五.finalize方法:在对象被垃圾回收器回收之前,系统自动调用对象的finalize方法(一个不再使用的对象随时可能会被回收)
六.getClass方法 : final方法,返回一个Class对象,用来代表对象所属的类。
通过Class对象,可以查询类的各种信息: 比如名字、超类、实现接口的名字等。
栗子
void PrintClassName(Object obj){
System.out.println("The Object's class is" + obj.getClass().getName());
}
七.notify、notifyAll、wait方法
final方法,不能覆盖
这三个方法主要用于多线程程序中