JAVA中的Object类

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方法,不能覆盖

    这三个方法主要用于多线程程序中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值