C語言中文網 目錄

Java Object類詳解:Object類的常用方法(equals()和getClass())

< 上一頁Java內置包裝類 Java Integer類下一頁 >

Object 是 Java 類庫中的一個特殊類,也是所有類的父類。當一個類被定義后,如果沒有指定繼承的父類,那么默認父類就是 Object 類。因此,以下兩個類是等價的。
public class MyClass{…}
等價于
public class MyClass extends Object {…}

由于 Java 中的所有類都是由 Object 類派生出來的,因此在 Object 類中定義的方法,在其他類中都可以使用,常見的方法如表 1 所示。

表1 Object類的常用方法
方法 說明
Object clone() 創建與該對象的類相同的新對象
boolean equals(Object) 比較兩對象是否相等
void finalize() 當垃圾回收器確定不存在對該對象的更多引用時,對象的圾回收器調用該方法
Class getClass() 返回一個對象運行時的實例類
int hashCode() 返回該對象的散列碼值
void notify() 激活等待在該對象的監視器上的一個線程
void notifyAll() 激活等待在該對象的監視器上的全部線程
String toString() 返回該對象的字符串表示
void wait() 在其他線程調用此對象的 notify() 方法或 notifyAll() 方法前,導致當前線程等待

其中,equals() 方法和 getClass() 方法在 Java 程序中比較常用。

equals() 方法

equals() 方法的作用與運算符類似,用于值與值的比較和值與對象的比較,而 equals() 方法用于對象與對象之間的比較,其使用格式如下:
boolean result=obj.equals(Object o);
其中,Obj 表示要進行比較的一個對象,o 表示另一個對象。

例 1

編寫一個 Java 程序,實現用戶登錄的驗證功能。要求,用戶從鍵盤輸入登錄用戶名和密碼,當用戶輸入的用戶名等于 admin 并且密碼也等于 admin 時,則表示該用戶為合法用戶,提示登錄成功,否則提示用戶名或者密碼錯誤信息。

在這里使用 equals() 方法將用戶輸入的字符串與保存 admin 的字符串對象進行比較,具體的代碼如下:
import java.util.Scanner;
public class Test01
{
    //驗證用戶名和密碼
    public static boolean validateLogin(String uname,String upwd)
    {
        boolean con=false;
        if(uname.equals("admin")&&upwd.equals("admin"))
        {    //比較兩個 String 對象
            con=true;
        }
        else
        {
            con=false;
        }
        return con;
    }
    public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.out.println("------歡迎使用大數據管理平臺------");
        System.out.println("用戶名:");
        String username=input.next();    //獲取用戶輸入的用戶名
        System.out.printin("密碼:");
        String pwd=input.next();    //獲取用戶輸入的密碼
        boolean con=validateLogin(username,pwd);
        if(con)
        {
            System.out.println("登錄成功!");
        }
        else
        {
            System.out.println("用戶名或密碼有誤!");
        }
    }
}

上述代碼在 validateLogin() 方法中又使用 equals() 方法將兩個 String 類型的對象進行了比較,當 uname 對象與保存 admin 的 String 對象相同時,uname.equals("admin") 為 true;與此相同,當 upwd 對象與保存 admin 的 String 對象相同時,upwd.equals("admin") 為 true。當用戶輸入的用戶名和密碼都為 admin 時,表示該用戶為合法用戶,提示登錄成功信息,否則提示用戶名或密碼有誤的錯誤信息。

該程序的運行結果下所示:
------歡迎使用大數據管理平臺------
用戶名:
adinm
密碼:
admin
用戶名或密碼有誤!
------歡迎使用大數據管理平臺------
用戶名:
admin
密碼:
admin
登錄成功!

getClass() 方法

getClass() 方法返回對象所屬的類,是一個 Class 對象。通過 Class 對象可以獲取該類的各種信息,包括類名、父類以及它所實現接口的名字等。

例 2

編寫一個實例,演示如何對 String 類型調用 getClass() 方法,然后輸出其父類及實現的接口信息。具體實現代碼如下:
public class Test02
{
    public static void printClassinfo(Object obj)
    {
        //獲取類名
        System.out.println("類名:"+obj.getClass().getName());

        //獲取父類名
        System.out.println("父類:"+obj.getClass().getSuperclass().getName());
        System.out.println("實現的接口有:");

        //獲取實現的接口并輸出
        for(int i=0;i<obj.getClass().getInterfaces().length;i++)
        {
            System.out.println(obj.getClass().getInterfaces()[i]);
        }
    }
    public static void main(String[] args)
    {
        String strObj=new String();
        printClassInfo(strObj);
    }
}

該程序的運行結果如下:
類名:java.lang.String
父類:java.lang.Object
實現的接口有:
interface java.io.Serializable
interface java.lang.Comparable
interface java.lang.CharSequence
< 上一頁Java內置包裝類 Java Integer類下一頁 >

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo